Of course it’s buffered. To return the GetNumbers as json, the collection must be read, converted to a json string content, the length of the content sent as a header, then the content itself.
If you want unbuffered output the your api will need to write to the response stream directly, and flush between items. See long polling. But nowdays a websocket which is packet oriented is a better approach.