Skip to main content
The Frontend Service provides the public-facing gRPC API for Temporal clients, SDKs, and CLI tools. It handles authentication, authorization, rate limiting, and request routing to internal services.

Overview

The Frontend Service is the primary entry point for:
  • Workflow lifecycle operations (start, signal, query, terminate)
  • Activity execution management
  • Namespace management
  • Task queue operations
  • Workflow history queries
  • Search and visibility operations
  • Schedule management
  • Batch operations
This service is defined by the Temporal API proto definitions in the temporal.api.workflowservice.v1 package.

Service Architecture

The Frontend Service:
  • Accepts requests from Temporal SDKs and CLI
  • Performs authentication and authorization checks
  • Applies rate limiting policies
  • Routes requests to History, Matching, and Worker services
  • Handles datacenter redirection for global namespaces
  • Provides both gRPC and HTTP/gRPC-Web endpoints

Core Operations

Workflow Execution

StartWorkflowExecution

Starts a new workflow execution.
string
required
Namespace to start the workflow in
string
required
Unique identifier for the workflow (client-specified)
WorkflowType
required
Type of workflow to execute
TaskQueue
required
Task queue for workflow tasks
Payloads
Input arguments for the workflow
Duration
Maximum execution time for the workflow
Duration
Maximum run time for a single workflow run
Duration
Timeout for workflow task processing
WorkflowIdReusePolicy
Policy for reusing workflow IDs
RetryPolicy
Retry policy for the workflow
string
Cron schedule for recurring workflows
Memo
Memo data attached to the workflow
SearchAttributes
Custom search attributes
string
Unique identifier for the workflow run

GetWorkflowExecutionHistory

Retrieves the history of a workflow execution.
string
required
Namespace of the workflow
WorkflowExecution
required
Workflow execution identifier (workflow_id and run_id)
int32
Maximum events per page
bytes
Pagination token
bool
Long poll for new events
HistoryEventFilterType
Filter for history events
History
Workflow history events
bytes
Token for next page
bool
Whether history is from archival storage

DescribeWorkflowExecution

Retrieves detailed information about a workflow execution.
string
required
Namespace of the workflow
WorkflowExecution
required
Workflow execution identifier
WorkflowExecutionConfig
Workflow configuration
WorkflowExecutionInfo
Execution state and metadata
PendingActivityInfo[]
Currently pending activities
PendingChildExecutionInfo[]
Pending child workflow executions

Workflow Control

SignalWorkflowExecution

Sends a signal to a running workflow.
string
required
Namespace of the workflow
WorkflowExecution
required
Target workflow execution
string
required
Name of the signal
Payloads
Signal input data
string
required
Identity of the signal sender
string
Unique request ID for idempotency

QueryWorkflow

Queries the state of a workflow execution.
string
required
Namespace of the workflow
WorkflowExecution
required
Workflow execution to query
WorkflowQuery
required
Query definition with name and arguments
QueryRejectCondition
Conditions under which query should be rejected
Payloads
Result of the query
QueryRejected
Query rejection details if rejected

UpdateWorkflowExecution

Sends an update to a workflow execution.
string
required
Namespace of the workflow
WorkflowExecution
required
Target workflow execution
Request
required
Update request with name and arguments
WaitPolicy
Policy for waiting for update completion
Outcome
Update outcome if completed
UpdateRef
Reference for polling update status

TerminateWorkflowExecution

Terminates a workflow execution.
string
required
Namespace of the workflow
WorkflowExecution
required
Workflow to terminate
string
required
Reason for termination
Payloads
Additional termination details
string
required
Identity of the terminator

CancelWorkflowExecution

Requests cancellation of a workflow execution.
string
required
Namespace of the workflow
WorkflowExecution
required
Workflow to cancel
string
required
Identity of the requester
string
Unique request ID

ResetWorkflowExecution

Resets a workflow execution to a previous state.
string
required
Namespace of the workflow
WorkflowExecution
required
Workflow to reset
string
required
Reason for reset
int64
Event ID to reset to
string
Unique request ID
string
New run ID after reset

Task Operations

PollWorkflowTaskQueue

Polls for a workflow task.
string
required
Namespace to poll from
TaskQueue
required
Task queue to poll
string
required
Worker identity
string
Worker binary checksum
bytes
Opaque task token
WorkflowExecution
Workflow execution information
WorkflowType
Workflow type
History
History events for processing

RespondWorkflowTaskCompleted

Completes a workflow task with commands.
bytes
required
Task token from poll response
Command[]
Workflow commands to execute
string
required
Worker identity
StickyExecutionAttributes
Sticky task queue attributes
bool
Whether to return a new task immediately
Message[]
Protocol messages
PollWorkflowTaskQueueResponse
New workflow task if requested

PollActivityTaskQueue

Polls for an activity task.
string
required
Namespace to poll from
TaskQueue
required
Task queue to poll
string
required
Worker identity
bytes
Task token
WorkflowExecution
Parent workflow
string
Activity identifier
ActivityType
Activity type
Payloads
Activity input

RecordActivityTaskHeartbeat

Records a heartbeat for a long-running activity.
bytes
required
Activity task token
Payloads
Progress details
string
required
Worker identity
bool
Whether cancellation has been requested

RespondActivityTaskCompleted

Completes an activity task with a result.
bytes
required
Activity task token
Payloads
Activity result
string
required
Worker identity

RespondActivityTaskFailed

Marks an activity task as failed.
bytes
required
Activity task token
Failure
Failure details
string
required
Worker identity

Namespace Operations

RegisterNamespace

Registers a new namespace.
string
required
Namespace name
string
Namespace description
string
Owner email address
Duration
required
Retention period for closed workflows
ClusterReplicationConfig[]
Cluster replication configuration
map<string, string>
Custom namespace data

DescribeNamespace

Retrieves namespace information.
string
required
Namespace name
NamespaceInfo
Namespace metadata
NamespaceConfig
Namespace configuration
NamespaceReplicationConfig
Replication settings

UpdateNamespace

Updates namespace configuration.
string
required
Namespace to update
UpdateNamespaceInfo
Updated namespace metadata
NamespaceConfig
Updated configuration
NamespaceReplicationConfig
Updated replication settings

ListNamespaces

Lists all namespaces.
int32
Maximum namespaces per page
bytes
Pagination token
DescribeNamespaceResponse[]
List of namespaces
bytes
Token for next page

ListWorkflowExecutions

Lists workflow executions with optional filtering.
string
required
Namespace to search
int32
Maximum executions per page
bytes
Pagination token
string
SQL-like search query
WorkflowExecutionInfo[]
List of workflow executions
bytes
Token for next page

ScanWorkflowExecutions

Scans workflow executions (similar to List but with different consistency guarantees).
string
required
Namespace to scan
int32
Maximum executions per page
bytes
Pagination token
string
Search query
WorkflowExecutionInfo[]
List of workflow executions

CountWorkflowExecutions

Counts workflow executions matching a query.
string
required
Namespace to count in
string
Search query
int64
Number of matching executions

Task Queue Management

DescribeTaskQueue

Retrieves information about a task queue.
string
required
Namespace of the task queue
TaskQueue
required
Task queue to describe
TaskQueueType
Type of task queue (workflow or activity)
bool
Whether to include status information
PollerInfo[]
Active pollers
TaskQueueStatus
Task queue status

Configuration

Frontend Service configuration is defined in the server config file:

Authentication & Authorization

The Frontend Service supports:
  • JWT-based authentication
  • Custom authorizers via plugin
  • Claim mappers for extracting permissions
  • Per-namespace access control

Rate Limiting

Rate limiting is applied per:
  • API method
  • Namespace
  • User identity
Configure via dynamic config keys.

See Also