---
title: "start a workflow"
method: POST
path: "/api/v1/workflow/start"
---

# start a workflow

`POST /api/v1/workflow/start`

## Request body

- WorkflowStartRequest
  - `workflowId` string, required
  - `iwfWorkflowType` string, required
  - `workflowTimeoutSeconds` integer, required
  - `iwfWorkerUrl` string, required
  - `startStateId` string
  - `waitForCompletionStateIds` string[]
  - `waitForCompletionStateExecutionIds` string[]
  - `stateInput` EncodedObject
    - `extStoreId` string
    - `extPath` string
    - `encoding` string
    - `data` string
  - `stateOptions` WorkflowStateOptions
    - `searchAttributesLoadingPolicy` PersistenceLoadingPolicy
      - `persistenceLoadingType` 'LOAD_ALL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITH_EXCLUSIVE_LOCK' | 'LOAD_NONE' | 'LOAD_ALL_WITH_PARTIAL_LOCK'
      - `partialLoadingKeys` string[]
      - `lockingKeys` string[]
      - `useKeyAsPrefix` boolean
      - `lazyLoadingLargeDataAttributes` boolean
    - `waitUntilApiSearchAttributesLoadingPolicy` PersistenceLoadingPolicy
      - `persistenceLoadingType` 'LOAD_ALL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITH_EXCLUSIVE_LOCK' | 'LOAD_NONE' | 'LOAD_ALL_WITH_PARTIAL_LOCK'
      - `partialLoadingKeys` string[]
      - `lockingKeys` string[]
      - `useKeyAsPrefix` boolean
      - `lazyLoadingLargeDataAttributes` boolean
    - `executeApiSearchAttributesLoadingPolicy` PersistenceLoadingPolicy
      - `persistenceLoadingType` 'LOAD_ALL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITH_EXCLUSIVE_LOCK' | 'LOAD_NONE' | 'LOAD_ALL_WITH_PARTIAL_LOCK'
      - `partialLoadingKeys` string[]
      - `lockingKeys` string[]
      - `useKeyAsPrefix` boolean
      - `lazyLoadingLargeDataAttributes` boolean
    - `dataObjectsLoadingPolicy` PersistenceLoadingPolicy
      - `persistenceLoadingType` 'LOAD_ALL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITH_EXCLUSIVE_LOCK' | 'LOAD_NONE' | 'LOAD_ALL_WITH_PARTIAL_LOCK'
      - `partialLoadingKeys` string[]
      - `lockingKeys` string[]
      - `useKeyAsPrefix` boolean
      - `lazyLoadingLargeDataAttributes` boolean
    - `startApiTimeoutSeconds` integer
    - `decideApiTimeoutSeconds` integer
    - `startApiRetryPolicy` RetryPolicy
      - `initialIntervalSeconds` integer
      - `backoffCoefficient` number, float
      - `maximumIntervalSeconds` integer
      - `maximumAttempts` integer
      - `maximumAttemptsDurationSeconds` integer
    - `decideApiRetryPolicy` RetryPolicy
      - `initialIntervalSeconds` integer
      - `backoffCoefficient` number, float
      - `maximumIntervalSeconds` integer
      - `maximumAttempts` integer
      - `maximumAttemptsDurationSeconds` integer
    - `startApiFailurePolicy` 'FAIL_WORKFLOW_ON_START_API_FAILURE' | 'PROCEED_TO_DECIDE_ON_START_API_FAILURE'
    - `executeApiFailurePolicy` 'FAIL_WORKFLOW_ON_EXECUTE_API_FAILURE' | 'PROCEED_TO_CONFIGURED_STATE'
    - `executeApiFailureProceedStateId` string
    - `executeApiFailureProceedStateOptions` WorkflowStateOptions — recursive
    - `skipStartApi` boolean
    - `waitUntilApiTimeoutSeconds` integer
    - `executeApiTimeoutSeconds` integer
    - `waitUntilApiRetryPolicy` RetryPolicy
      - `initialIntervalSeconds` integer
      - `backoffCoefficient` number, float
      - `maximumIntervalSeconds` integer
      - `maximumAttempts` integer
      - `maximumAttemptsDurationSeconds` integer
    - `executeApiRetryPolicy` RetryPolicy
      - `initialIntervalSeconds` integer
      - `backoffCoefficient` number, float
      - `maximumIntervalSeconds` integer
      - `maximumAttempts` integer
      - `maximumAttemptsDurationSeconds` integer
    - `waitUntilApiFailurePolicy` 'FAIL_WORKFLOW_ON_FAILURE' | 'PROCEED_ON_FAILURE'
    - `skipWaitUntil` boolean
    - `dataAttributesLoadingPolicy` PersistenceLoadingPolicy
      - `persistenceLoadingType` 'LOAD_ALL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITH_EXCLUSIVE_LOCK' | 'LOAD_NONE' | 'LOAD_ALL_WITH_PARTIAL_LOCK'
      - `partialLoadingKeys` string[]
      - `lockingKeys` string[]
      - `useKeyAsPrefix` boolean
      - `lazyLoadingLargeDataAttributes` boolean
    - `waitUntilApiDataAttributesLoadingPolicy` PersistenceLoadingPolicy
      - `persistenceLoadingType` 'LOAD_ALL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITH_EXCLUSIVE_LOCK' | 'LOAD_NONE' | 'LOAD_ALL_WITH_PARTIAL_LOCK'
      - `partialLoadingKeys` string[]
      - `lockingKeys` string[]
      - `useKeyAsPrefix` boolean
      - `lazyLoadingLargeDataAttributes` boolean
    - `executeApiDataAttributesLoadingPolicy` PersistenceLoadingPolicy
      - `persistenceLoadingType` 'LOAD_ALL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITHOUT_LOCKING' | 'LOAD_PARTIAL_WITH_EXCLUSIVE_LOCK' | 'LOAD_NONE' | 'LOAD_ALL_WITH_PARTIAL_LOCK'
      - `partialLoadingKeys` string[]
      - `lockingKeys` string[]
      - `useKeyAsPrefix` boolean
      - `lazyLoadingLargeDataAttributes` boolean
  - `workflowStartOptions` WorkflowStartOptions
    - `workflowIDReusePolicy` 'ALLOW_DUPLICATE_FAILED_ONLY' | 'ALLOW_DUPLICATE' | 'REJECT_DUPLICATE' | 'TERMINATE_IF_RUNNING'
    - `cronSchedule` string
    - `workflowStartDelaySeconds` integer
    - `retryPolicy` WorkflowRetryPolicy
      - `initialIntervalSeconds` integer
      - `backoffCoefficient` number, float
      - `maximumIntervalSeconds` integer
      - `maximumAttempts` integer
    - `searchAttributes` SearchAttribute[]
      - `key` string
      - `stringValue` string
      - `integerValue` integer
      - `doubleValue` number, double
      - `boolValue` boolean
      - `stringArrayValue` string[]
      - `valueType` 'KEYWORD' | 'TEXT' | 'DATETIME' | 'INT' | 'DOUBLE' | 'BOOL' | 'KEYWORD_ARRAY'
    - `dataAttributes` KeyValue[]
      - `key` string
      - `value` EncodedObject
        - `extStoreId` string
        - `extPath` string
        - `encoding` string
        - `data` string
    - `workflowConfigOverride` WorkflowConfig
      - `disableSystemSearchAttribute` boolean
      - `executingStateIdMode` 'ENABLED_FOR_ALL' | 'ENABLED_FOR_STATES_WITH_WAIT_UNTIL' | 'DISABLED'
      - `continueAsNewThreshold` integer
      - `continueAsNewPageSizeInBytes` integer
      - `optimizeActivity` boolean
      - `optimizeTimer` boolean
    - `idReusePolicy` 'ALLOW_IF_PREVIOUS_EXISTS_ABNORMALLY' | 'ALLOW_IF_PREVIOUS_EXITS_ABNORMALLY' | 'ALLOW_IF_NO_RUNNING' | 'DISALLOW_REUSE' | 'ALLOW_TERMINATE_IF_RUNNING'
    - `useMemoForDataAttributes` boolean
    - `workflowAlreadyStartedOptions` WorkflowAlreadyStartedOptions
      - `ignoreAlreadyStartedError` boolean, required
      - `requestId` string

## Response `200`

successful operation

- WorkflowStartResponse
  - `workflowRunId` string

## Other responses

- `400` — Invalid input

## Changes

- **2026-07-17** `fe9c7606824c` — 11 info
  - added the new optional request property `stateInput/extPath`
  - added the new optional request property `stateInput/extStoreId`
  - added the new optional request property `stateOptions/dataAttributesLoadingPolicy/lazyLoadingLargeDataAttributes`
  - added the new optional request property `stateOptions/dataObjectsLoadingPolicy/lazyLoadingLargeDataAttributes`
  - …7 more
- **2025-02-04** `f214e9d70d66` — 1 info
  - added the new optional request property `workflowStartOptions/workflowConfigOverride/optimizeTimer`
- **2024-10-30** `377ec9ef7ac8` — 1 info
  - added the new optional request property `workflowStartOptions/workflowAlreadyStartedOptions`
- **2024-10-24** `6be3be10876f` — 1 warning, 1 info
  - removed the request property `workflowStartOptions/workflowConfigOverride/enabledExecutingStateExecutionIds`
  - added the new optional request property `workflowStartOptions/workflowConfigOverride/executingStateIdMode`
- **2024-10-17** `d4cb0840ac8b` — 4 info
  - added the new optional request property `stateOptions/executeApiDataAttributesLoadingPolicy`
  - added the new optional request property `stateOptions/executeApiSearchAttributesLoadingPolicy`
  - added the new optional request property `stateOptions/waitUntilApiDataAttributesLoadingPolicy`
  - added the new optional request property `stateOptions/waitUntilApiSearchAttributesLoadingPolicy`

[Full history](https://skmtc.dev/indeedeng/apis/workflow-apis/changes/api/v1/workflow/start/post.md)

---

[API](https://skmtc.dev/indeedeng/apis/workflow-apis.md) · [All operations](https://skmtc.dev/indeedeng/apis/workflow-apis/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/indeedeng/workflow-apis/revisions/fe9c7606824c/schema)
