I would suggest returning only what is needed + a little clarification.
For example, depending on how your API is to be used, you could include a copy of the object, as is exists after being saved.
So a POST of {key: 123} might return {key: 123, foo: 'bar'}.
The basic idea is it is better to return the object then to have to query for it again.
That said, of your API consumers don't need the object there's no need to return it.
I usually return {success: true} or some such, when there is no object required on POST PUT and PATCH because it makes it easier for the receiving end. That said, it's better 99% of the time to return the saved representation of the object, it's rare that they won't need it anyway, and it's "cheaper" to send it all in one request then in two.
To be specific, in a lab it's perfectly find to handle everything with just status codes, in the real world, it's much better to return some data, even if redundant, so that API consumers can easily under stand what your trying to say.
Returning 200 {success: true} lets people write code both ways:
if response.code == 200
do stuff
end
and
if response.body.success
do stuff
end
in addition it's not that hard to do on your side.
Lastly, (sorry for the poos answer structure), by providing a public JSON api your giving up a lot of control on how it's going to be used. Some clients may react different to different bodies (or lack there of) or status codes.