Temporal Cloud Latency SLA - Slow API Speeds

Our frontend is using the Temporal Cloud API to show workflows and gathering their states. The speed of the API is a concern for us since requests routinely take over 900ms to return responses. What is the SLA for response times on the Temporal Cloud API? The website doesn’t have any details. I’m based in UK and I’m using Temporal’s US server.

$ grpcurl -vv -H "authorization: Bearer <apiKey>" -H "temporal-cloud-api-version: v0.4.0" -H "temporal-namespace: <namespace>" -d '{"namespace":"<namespace>", "query":"<query>"}' us-east-1.aws.api.temporal.io:7233 temporal.api.workflowservice.v1.WorkflowService/ListWorkflowExecutions

Response headers received:
content-type: application/grpc
date: Thu, 06 Feb 2025 16:09:45 GMT
server: temporal

Estimated response size: 3262 bytes
Response trailers received:
(empty)
Sent 1 request and received 1 response
Timing Data: 971.978125ms
  Dial: 284.848708ms
    TLS Setup: 13.5µs
    BlockingDial: 284.659375ms
  InvokeRPC: 597.537708ms
grpcurl -vv -H "authorization: Bearer <apiKey>" -H "temporal-cloud-api-version: v0.4.0" -H "temporal-namespace: <namespace>" -d '{"namespace":"<namespace>", "execution":{"workflowId": "746072a4-4fd9-4158-bd88-bf06239394f7"}, "query":{"queryType":"get_state"}}' us-east-1.aws.api.temporal.io:7233 temporal.api.workflowservice.v1.WorkflowService/QueryWorkflow 

Response headers received:
content-type: application/grpc
date: Thu, 06 Feb 2025 16:45:29 GMT
server: temporal

Estimated response size: 1077 bytes
Response trailers received:
(empty)
Sent 1 request and received 1 response
Timing Data: 974.911416ms
  Dial: 297.834916ms
    TLS Setup: 13.083µs
    BlockingDial: 297.645334ms
  InvokeRPC: 586.154ms

List workflows API is not built for business level queries. Its main user UI and CLI and some tools. If you need fast operations that spawn multiple workflows use an external database.

Temporal Cloud API SLAs are centered around APIs that drive workflow execution. For example workflow start, signal, etc.

Is this where Nexus would be useful?

I’m not sure how nexus solves the fast index issue.

Default page size (max number of results returned per single call to ListWorkflowExecutions) is 1K. You could set lower page size if you are concerned about single call latency.
Temporal sdks also have convenience methods that do pagination for you and can stream back results which might be something to look at for your use case.