VKontakte API does exactly this. It's very much decoupled from the HTTP layer to begin with. The status code is always 200. You can use either POST or GET with any API method. You can pass parameters in the query string, as x-www-form-urlencoded, or split them between the two. As long as they end up in $_REQUEST on the server, it doesn't care.