thanks for the link! Responding to the user and finishing later is definitely in the realm of possibilities. Perhaps i could include a "respond time" in the response telling it when to make a request for the final image based upon current response times (to avoid polling).
SignalR/Socket.io is the other possibility.
The farm is also there as a failsafe, i'd like the process to be able to break/go down without impacting other methods in the main API. Further, the type of work the "farm machines" are doing is image processing-- they will no doubt need more "juice" and therefore be initially more expensive than standard web/api servers. Financially it will be a better decision to not require all servers to be as "beefy" from the get go.