I would personally still use Guzzle for your use case. I always build wrappers around guzzle and use that. So if you, for examplehave a call to fetch all customers from some API I build a wrapper around that calledCustomerService`. In there you can do all the guzzle logic.
Also for reusing guzzle clients, I put them in the container as a singleton. This way you can dependency inject them and reuse them in different service classes.