openapi: 3.0.3 info: title: Temporal HTTP Cluster Workflows API description: The Temporal HTTP API is a first-party grpc-gateway that maps a REST/JSON subset of the Temporal WorkflowService (gRPC) onto HTTP paths under `/api/v1`. Temporal's primary and complete API surface is gRPC (WorkflowService and OperatorService, defined as protobuf in github.com/temporalio/api); this HTTP API exists for automation, CI/CD, and environments where gRPC is impractical, and it exposes only a subset of the gRPC methods. The worker task-polling and task-completion RPCs (PollWorkflowTaskQueue, PollActivityTaskQueue, RespondWorkflowTaskCompleted, PollNexusTaskQueue, and similar) are NOT exposed over HTTP and remain gRPC-only. On Temporal Cloud the HTTP API is served per namespace over HTTPS; self-hosted it is served by the frontend service when the HTTP port is enabled. Requests authenticate with a Bearer API key (or mTLS on self-hosted). The paths and verbs below are drawn from the google.api.http annotations on the WorkflowService proto and are modeled here, not exhaustively confirmed against a live namespace. version: '1.0' contact: name: Temporal Technologies url: https://temporal.io license: name: MIT url: https://github.com/temporalio/api/blob/master/LICENSE servers: - url: https://{namespace}.{account}.tmprl.cloud/api/v1 description: Temporal Cloud (per-namespace HTTP API endpoint) variables: namespace: default: your-namespace description: Your Temporal Cloud namespace name. account: default: your-account description: Your Temporal Cloud account (short) ID. - url: http://localhost:7243/api/v1 description: Self-hosted frontend HTTP API (when the HTTP port is enabled) security: - bearerAuth: [] tags: - name: Workflows description: Start, describe, list, count, and read the history of workflow executions. paths: /namespaces/{namespace}/workflows/{workflow_id}: parameters: - $ref: '#/components/parameters/Namespace' - name: workflow_id in: path required: true description: The workflow ID to start (client-assigned). schema: type: string post: operationId: startWorkflowExecution tags: - Workflows summary: Start a workflow execution description: Starts a new workflow execution. Maps to the gRPC StartWorkflowExecution RPC. The request body carries the workflow type, task queue, input, and options. requestBody: required: true content: application/json: schema: $ref: '#/components/schemas/StartWorkflowExecutionRequest' responses: '200': description: The started workflow execution's run ID. content: application/json: schema: $ref: '#/components/schemas/StartWorkflowExecutionResponse' '401': $ref: '#/components/responses/Unauthorized' '429': $ref: '#/components/responses/ResourceExhausted' /namespaces/{namespace}/workflows/{execution.workflow_id}: parameters: - $ref: '#/components/parameters/Namespace' - name: execution.workflow_id in: path required: true description: The workflow ID of the execution to describe. schema: type: string get: operationId: describeWorkflowExecution tags: - Workflows summary: Describe a workflow execution description: Returns information about the specified workflow execution - its status, type, task queue, timestamps, pending activities, and more. Maps to the gRPC DescribeWorkflowExecution RPC. parameters: - name: execution.run_id in: query required: false description: Optional run ID; defaults to the latest run. schema: type: string responses: '200': description: Details about the workflow execution. content: application/json: schema: $ref: '#/components/schemas/DescribeWorkflowExecutionResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /namespaces/{namespace}/workflows: parameters: - $ref: '#/components/parameters/Namespace' get: operationId: listWorkflowExecutions tags: - Workflows summary: List workflow executions description: Lists workflow executions in a namespace, optionally filtered with a List Filter (SQL-like visibility query). Maps to the gRPC ListWorkflowExecutions RPC. parameters: - name: query in: query required: false description: A List Filter (visibility query) to filter executions. schema: type: string - name: page_size in: query required: false schema: type: integer - name: next_page_token in: query required: false schema: type: string format: byte responses: '200': description: A page of workflow executions. content: application/json: schema: $ref: '#/components/schemas/ListWorkflowExecutionsResponse' '401': $ref: '#/components/responses/Unauthorized' /namespaces/{namespace}/workflow-count: parameters: - $ref: '#/components/parameters/Namespace' get: operationId: countWorkflowExecutions tags: - Workflows summary: Count workflow executions description: Returns the number of workflow executions matching a visibility query. Maps to the gRPC CountWorkflowExecutions RPC. parameters: - name: query in: query required: false schema: type: string responses: '200': description: The matching execution count. content: application/json: schema: type: object properties: count: type: string format: int64 '401': $ref: '#/components/responses/Unauthorized' /namespaces/{namespace}/archived-workflows: parameters: - $ref: '#/components/parameters/Namespace' get: operationId: listArchivedWorkflowExecutions tags: - Workflows summary: List archived workflow executions description: Lists workflow executions that have been archived. Maps to the gRPC ListArchivedWorkflowExecutions RPC. parameters: - name: query in: query required: false schema: type: string - name: page_size in: query required: false schema: type: integer - name: next_page_token in: query required: false schema: type: string format: byte responses: '200': description: A page of archived workflow executions. content: application/json: schema: $ref: '#/components/schemas/ListWorkflowExecutionsResponse' '401': $ref: '#/components/responses/Unauthorized' /namespaces/{namespace}/workflows/{execution.workflow_id}/history: parameters: - $ref: '#/components/parameters/Namespace' - $ref: '#/components/parameters/ExecutionWorkflowId' get: operationId: getWorkflowExecutionHistory tags: - Workflows summary: Get workflow execution history description: Returns the event history of a workflow execution. Maps to the gRPC GetWorkflowExecutionHistory RPC. parameters: - name: execution.run_id in: query required: false schema: type: string - name: next_page_token in: query required: false schema: type: string format: byte responses: '200': description: The workflow event history. content: application/json: schema: $ref: '#/components/schemas/GetWorkflowExecutionHistoryResponse' '401': $ref: '#/components/responses/Unauthorized' '404': $ref: '#/components/responses/NotFound' /namespaces/{namespace}/workflows/{execution.workflow_id}/history-reverse: parameters: - $ref: '#/components/parameters/Namespace' - $ref: '#/components/parameters/ExecutionWorkflowId' get: operationId: getWorkflowExecutionHistoryReverse tags: - Workflows summary: Get workflow execution history (reverse) description: Returns the event history of a workflow execution in reverse order. Maps to the gRPC GetWorkflowExecutionHistoryReverse RPC. parameters: - name: execution.run_id in: query required: false schema: type: string - name: next_page_token in: query required: false schema: type: string format: byte responses: '200': description: The workflow event history in reverse order. content: application/json: schema: $ref: '#/components/schemas/GetWorkflowExecutionHistoryResponse' '401': $ref: '#/components/responses/Unauthorized' components: schemas: DescribeWorkflowExecutionResponse: type: object additionalProperties: true properties: workflowExecutionInfo: type: object additionalProperties: true pendingActivities: type: array items: type: object additionalProperties: true WorkflowType: type: object properties: name: type: string StartWorkflowExecutionRequest: type: object properties: namespace: type: string workflowId: type: string workflowType: $ref: '#/components/schemas/WorkflowType' taskQueue: $ref: '#/components/schemas/TaskQueue' input: $ref: '#/components/schemas/Payloads' requestId: type: string workflowIdReusePolicy: type: string workflowExecutionTimeout: type: string workflowRunTimeout: type: string workflowTaskTimeout: type: string Status: type: object description: A google.rpc.Status-style error payload. properties: code: type: integer message: type: string details: type: array items: type: object additionalProperties: true GetWorkflowExecutionHistoryResponse: type: object properties: history: type: object properties: events: type: array items: type: object additionalProperties: true nextPageToken: type: string format: byte archived: type: boolean StartWorkflowExecutionResponse: type: object properties: runId: type: string TaskQueue: type: object properties: name: type: string kind: type: string ListWorkflowExecutionsResponse: type: object properties: executions: type: array items: type: object additionalProperties: true nextPageToken: type: string format: byte Payloads: type: object description: Temporal payloads envelope. Each payload carries base64-encoded metadata and data. properties: payloads: type: array items: type: object properties: metadata: type: object additionalProperties: type: string format: byte data: type: string format: byte responses: NotFound: description: The requested workflow execution or namespace was not found. content: application/json: schema: $ref: '#/components/schemas/Status' Unauthorized: description: Missing or invalid API key. content: application/json: schema: $ref: '#/components/schemas/Status' ResourceExhausted: description: The namespace rate limit (APS/RPS/OPS) was exceeded. gRPC returns a ResourceExhausted status; over HTTP this surfaces as 429. Clients should back off and retry. content: application/json: schema: $ref: '#/components/schemas/Status' parameters: ExecutionWorkflowId: name: execution.workflow_id in: path required: true description: The workflow ID of the target execution. schema: type: string Namespace: name: namespace in: path required: true description: The Temporal namespace. schema: type: string securitySchemes: bearerAuth: type: http scheme: bearer description: 'Bearer API key. On Temporal Cloud, pass an API key as `Authorization: Bearer `. Self-hosted deployments may use mTLS instead. Requests are scoped to the namespace in the path.'