Salesforce Flow REST API
REST API for managing and executing Salesforce Flows programmatically. Enables creating, updating, querying, and executing flow automation processes, flow interviews, and invocable actions within Salesforce.
REST API for managing and executing Salesforce Flows programmatically. Enables creating, updating, querying, and executing flow automation processes, flow interviews, and invocable actions within Salesforce.
openapi: 3.1.0
info:
title: Salesforce Flow REST API
description: >-
REST API for managing and executing Salesforce Flows programmatically.
Enables creating, updating, querying, and executing flow automation
processes, flow interviews, and invocable actions within Salesforce.
version: 59.0.0
termsOfService: https://www.salesforce.com/company/legal/agreements/
contact:
name: Salesforce Developer Support
url: https://developer.salesforce.com/
license:
name: Salesforce Master Subscription Agreement
url: https://www.salesforce.com/company/legal/agreements/
externalDocs:
description: Salesforce Flow REST API Developer Guide
url: https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/resources_flow.htm
servers:
- url: https://{instance}.salesforce.com/services/data/v59.0
description: Salesforce Production or Developer Edition
variables:
instance:
default: yourInstance
description: Your Salesforce instance identifier
security:
- oauth2: []
- bearerAuth: []
tags:
- name: Flow Definitions
description: Operations for managing Flow metadata and definitions
- name: Flow Interviews
description: Operations for executing and managing Flow interviews
- name: Invocable Actions
description: Operations for triggering invocable flows as actions
- name: Flow Categories
description: Operations for organizing flows by category
paths:
/sobjects/Flow:
get:
operationId: listFlows
summary: List Flow Definitions
description: >-
Retrieves a list of Flow definitions available in the Salesforce org,
including metadata such as API name, label, type, and status.
tags:
- Flow Definitions
parameters:
- name: q
in: query
description: SOQL query string to filter flows
required: false
schema:
type: string
responses:
'200':
description: Successfully retrieved list of flows
content:
application/json:
schema:
$ref: '#/components/schemas/FlowListResponse'
'401':
description: Unauthorized - invalid or expired session
/sobjects/Flow/{flowId}:
get:
operationId: getFlow
summary: Get Flow Definition
description: >-
Retrieves details about a specific Flow definition including its
metadata, version, and associated interview settings.
tags:
- Flow Definitions
parameters:
- name: flowId
in: path
required: true
description: The unique Salesforce ID of the Flow record
schema:
type: string
responses:
'200':
description: Successfully retrieved flow definition
content:
application/json:
schema:
$ref: '#/components/schemas/FlowDefinition'
'404':
description: Flow not found
patch:
operationId: updateFlow
summary: Update Flow Definition
description: >-
Updates metadata fields on an existing Flow definition, such as
its active status or description.
tags:
- Flow Definitions
parameters:
- name: flowId
in: path
required: true
description: The unique Salesforce ID of the Flow record
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FlowUpdateInput'
responses:
'204':
description: Flow updated successfully
'400':
description: Invalid request payload
/sobjects/FlowInterview:
post:
operationId: createFlowInterview
summary: Create Flow Interview
description: >-
Creates and starts a new Flow Interview (a running instance of a Flow).
Optionally passes input variables to initialize the Flow.
tags:
- Flow Interviews
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/FlowInterviewInput'
responses:
'201':
description: Flow Interview created and started
content:
application/json:
schema:
$ref: '#/components/schemas/CreateResponse'
'400':
description: Invalid request or Flow not found
/sobjects/FlowInterview/{interviewId}:
get:
operationId: getFlowInterview
summary: Get Flow Interview
description: >-
Retrieves the current state, status, and output variables of a
running or completed Flow Interview.
tags:
- Flow Interviews
parameters:
- name: interviewId
in: path
required: true
description: The unique Salesforce ID of the FlowInterview record
schema:
type: string
responses:
'200':
description: Successfully retrieved flow interview
content:
application/json:
schema:
$ref: '#/components/schemas/FlowInterview'
'404':
description: Interview not found
delete:
operationId: deleteFlowInterview
summary: Delete Flow Interview
description: >-
Deletes a Flow Interview record. Typically used for paused interviews
that are no longer needed.
tags:
- Flow Interviews
parameters:
- name: interviewId
in: path
required: true
description: The unique Salesforce ID of the FlowInterview record
schema:
type: string
responses:
'204':
description: Interview deleted successfully
'404':
description: Interview not found
/actions/custom/flow:
get:
operationId: listInvocableFlows
summary: List Invocable Flows
description: >-
Returns a list of all flows that are exposed as invocable actions,
including their API names and input/output variable definitions.
tags:
- Invocable Actions
responses:
'200':
description: Successfully retrieved invocable flows
content:
application/json:
schema:
$ref: '#/components/schemas/InvocableActionList'
/actions/custom/flow/{flowApiName}:
get:
operationId: getInvocableFlowMetadata
summary: Get Invocable Flow Metadata
description: >-
Retrieves the input and output variable definitions for a specific
invocable flow action.
tags:
- Invocable Actions
parameters:
- name: flowApiName
in: path
required: true
description: The API name of the Flow
schema:
type: string
responses:
'200':
description: Successfully retrieved flow action metadata
content:
application/json:
schema:
$ref: '#/components/schemas/InvocableFlowMetadata'
post:
operationId: invokeFlow
summary: Invoke Flow Action
description: >-
Executes a Flow as an invocable action, passing input variables and
receiving output variables upon completion.
tags:
- Invocable Actions
parameters:
- name: flowApiName
in: path
required: true
description: The API name of the Flow to invoke
schema:
type: string
requestBody:
required: true
content:
application/json:
schema:
$ref: '#/components/schemas/InvokeFlowInput'
responses:
'200':
description: Flow executed successfully
content:
application/json:
schema:
$ref: '#/components/schemas/InvokeFlowResponse'
'400':
description: Invalid input variables or flow error
/query:
get:
operationId: queryFlows
summary: Query Flows with SOQL
description: >-
Executes a SOQL query to retrieve Flow and FlowInterview records
with custom filtering, ordering, and field selection.
tags:
- Flow Definitions
parameters:
- name: q
in: query
required: true
description: SOQL query string (e.g. SELECT Id, ApiName, Status FROM Flow)
schema:
type: string
responses:
'200':
description: Query results returned
content:
application/json:
schema:
$ref: '#/components/schemas/QueryResult'
'400':
description: Invalid SOQL query
components:
securitySchemes:
oauth2:
type: oauth2
flows:
authorizationCode:
authorizationUrl: https://login.salesforce.com/services/oauth2/authorize
tokenUrl: https://login.salesforce.com/services/oauth2/token
scopes:
api: Access and manage your data
full: Full access
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT
schemas:
FlowListResponse:
type: object
properties:
totalSize:
type: integer
description: Total number of flows returned
done:
type: boolean
records:
type: array
items:
$ref: '#/components/schemas/FlowSummary'
FlowSummary:
type: object
properties:
Id:
type: string
description: Salesforce record ID
ApiName:
type: string
description: API name of the Flow
Label:
type: string
description: Display label of the Flow
ProcessType:
type: string
description: Type of flow (Flow, AutoLaunchedFlow, etc.)
Status:
type: string
enum:
- Active
- Obsolete
- Draft
- InvalidDraft
description: Current activation status
VersionNumber:
type: integer
description: Version number of the flow
FlowDefinition:
type: object
properties:
Id:
type: string
ApiName:
type: string
Label:
type: string
Description:
type: string
ProcessType:
type: string
Status:
type: string
VersionNumber:
type: integer
CreatedDate:
type: string
format: date-time
LastModifiedDate:
type: string
format: date-time
CreatedById:
type: string
LastModifiedById:
type: string
FlowUpdateInput:
type: object
properties:
Description:
type: string
description: Updated description for the flow
Status:
type: string
enum:
- Active
- Obsolete
description: New status for the flow
FlowInterviewInput:
type: object
required:
- FlowDefinitionView
properties:
FlowDefinitionView:
type: object
properties:
ApiName:
type: string
description: API name of the flow to start
inputs:
type: array
description: Input variable values for the flow
items:
$ref: '#/components/schemas/FlowInputVariable'
FlowInputVariable:
type: object
properties:
name:
type: string
description: Variable name
value:
description: Variable value (any type)
FlowInterview:
type: object
properties:
Id:
type: string
CurrentElement:
type: string
description: Name of the current flow element
GuidedFlowName:
type: string
HasFinished:
type: boolean
Name:
type: string
outputs:
type: array
items:
$ref: '#/components/schemas/FlowOutputVariable'
FlowOutputVariable:
type: object
properties:
name:
type: string
value:
description: Output variable value
InvocableActionList:
type: object
properties:
actions:
type: array
items:
type: object
properties:
name:
type: string
label:
type: string
type:
type: string
InvocableFlowMetadata:
type: object
properties:
name:
type: string
label:
type: string
type:
type: string
inputs:
type: array
items:
$ref: '#/components/schemas/ActionParameter'
outputs:
type: array
items:
$ref: '#/components/schemas/ActionParameter'
ActionParameter:
type: object
properties:
name:
type: string
label:
type: string
description:
type: string
required:
type: boolean
type:
type: string
maxOccurs:
type: integer
InvokeFlowInput:
type: object
properties:
inputs:
type: array
items:
type: object
additionalProperties: true
description: Array of input variable objects for the flow
InvokeFlowResponse:
type: object
properties:
outputs:
type: array
items:
type: object
additionalProperties: true
description: Array of output variable objects from the flow
CreateResponse:
type: object
properties:
id:
type: string
description: Salesforce record ID of the created resource
success:
type: boolean
errors:
type: array
items:
type: string
QueryResult:
type: object
properties:
totalSize:
type: integer
done:
type: boolean
nextRecordsUrl:
type: string
records:
type: array
items:
type: object
additionalProperties: true