Your program sends the service the page address and the captcha's key. The service answers with a token, and your program submits that token with the form as if a person had solved the puzzle.
Many sites tie the token to the IP address that requested it. If the service solves from its own address and you submit from yours, the token is rejected. The fix is to give the service your proxy, with the same sticky session you use yourself, so both steps come from one address.