---
title: "Add Workflow"
method: POST
path: "/business/v2/workflows"
tags: ["Workflows"]
---

# Add Workflow

`POST /business/v2/workflows`

## Request

- Base URL: `https://api.soldo.com`
- URL: `https://api.soldo.com/business/v2/workflows`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `https://api.soldo.com/oauth/authorize` scopes: `workflow_write`
- TypeScript: <https://skmtc.dev/soldo/apis/soldo-business-api-v2-0/docs/business/v2/workflows/post.ts> (a function with typed inputs; its response is checked against the schema)

Endpoint to add a new `Workflow`.

## Request body

- CreateWorkflow: Base schema for workflow creation. The actual fields depend on the `target_type`.
  - `name` string, required: The name of the `Workflow`.
  - `description` string, required: The description of the `Workflow`.
  - `policy_url` string: The URL of the policy document for the `Workflow`.
  - `steps` WorkflowProcessStep[], required: The ordered set of workflow steps, where each step includes its configuration and the reviewers assigned for approval or review actions.
    - `step_number` integer, required: A number which identifies the order of the step. The first step should start with `1`, the following steps number should be previous `step_number + 1` without any gap.
    - `reviewer_type` 'LINE_MANAGER' | 'ROLE' | 'USER', required
    - `reviewer_info` WorkflowReviewerInfo
      - `ids` string[], required: The ID of the reviewers (only required in case of reviewer of type `ROLE` and `USER`).
    - `automation_rule` WorkflowAutomationRule
      - `expense_status` 'APPROVED' | 'PARTIALLY_APPROVED' | 'DECLINED', required
      - `required_info` boolean, required: A boolean to define whether a transaction should have all the required info (as defined on the Reminders feature) completed.
      - `amount_condition` WorkflowAmountCondition
        - `amount` number, required: The amount a transaction must exceed / not exceed in order to satisfy the condition.
        - `operator` 'HIGHER_EQUAL' | 'LOWER_EQUAL', required
  - `visibilities` PersistVisibility[], required: Workflow visibility definition. This field contains the list of users that are able to see this workflow. To grant access to all users, pass an empty list or -1.
    - `type` 'USER', required
    - `value` string[], required: One or more values that identify the visibility condition. If the type is `USER`, the value must be `ALL`.
  - `target_type` 'FUNDS' | 'GOODS_AND_SERVICES' | 'TRIP', required

## Response `200`

The created `Workflow`.

- Workflow: Base schema for workflow. The actual fields depend on the `target_type`.
  - `id` string: The `Workflow` ID.
  - `name` string: The name of the `Workflow`.
  - `description` string: The description of the `Workflow`.
  - `policy_url` string: The URL of the policy document for the `Workflow`.
  - `status` 'ACTIVE' | 'DEACTIVATED' | 'DELETED'
  - `target_type` 'FUNDS' | 'GOODS_AND_SERVICES' | 'TRIP'
  - `priority` integer: The priority of the `Workflow`.
  - `steps_count` integer: The number of steps in the `Workflow`.
  - `steps` WorkflowProcessStep[], required: The ordered set of workflow steps, where each step includes its configuration and the reviewers assigned for approval or review actions.
    - `step_number` integer, required: A number which identifies the order of the step. The first step should start with `1`, the following steps number should be previous `step_number + 1` without any gap.
    - `reviewer_type` 'LINE_MANAGER' | 'ROLE' | 'USER', required
    - `reviewer_info` WorkflowReviewerInfo
      - `ids` string[], required: The ID of the reviewers (only required in case of reviewer of type `ROLE` and `USER`).
    - `automation_rule` WorkflowAutomationRule
      - `expense_status` 'APPROVED' | 'PARTIALLY_APPROVED' | 'DECLINED', required
      - `required_info` boolean, required: A boolean to define whether a transaction should have all the required info (as defined on the Reminders feature) completed.
      - `amount_condition` WorkflowAmountCondition
        - `amount` number, required: The amount a transaction must exceed / not exceed in order to satisfy the condition.
        - `operator` 'HIGHER_EQUAL' | 'LOWER_EQUAL', required
  - `visibilities` PersistVisibility[], required: Workflow visibility definition. This field contains the list of users that are able to see this workflow. To grant access to all users, pass an empty list or -1.
    - `type` 'USER', required
    - `value` string[], required: One or more values that identify the visibility condition. If the type is `USER`, the value must be `ALL`.

## Other responses

- `400`: Your request has missing arguments or is malformed.

## Changes

- **2026-08-06** `7be21448a2b3`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/soldo/apis/soldo-business-api-v2-0/changes/business/v2/workflows/post.md)

---

[API](https://skmtc.dev/soldo/apis/soldo-business-api-v2-0.md) - [All operations](https://skmtc.dev/soldo/apis/soldo-business-api-v2-0/llms.txt) - [OpenAPI document](https://skmtc.dev/soldo/apis/soldo-business-api-v2-0/revisions/23fc5d07b367?raw)
