Isn't temporal.io a single point of failure because you would wrap all your api calls inside temporal.io and if temporal.io fails, either the api call will fail or atleast the task inside it won't be scheduled? Am I understanding something wrong?
Your code is run in a worker process. If the worker fails, another worker will pick up where the first left off. The state of each workflow function is stored by the Temporal Cluster. The Cluster is a SPOF, but each component of it is fault tolerant and horizontally scalable, so it's a low-risk SPOF to have. In choreography, your message bus would be the SPOF, and Temporal provides much better DX than choreography.