You can do both but the official recomendation is shell + curl[0].
Not an expert but I think there's performance gains to calling the binary directly rather than through python.
[0]: https://docs.astral.sh/uv/