---
title: "Uploads a new flow for the authenticated user."
method: POST
path: "/Multishock/Flow"
tags: ["Multishock", "Multishock"]
---

# Uploads a new flow for the authenticated user.

`POST /Multishock/Flow`

## Request body

- UploadFlowRequest — Request model for uploading a new flow from MultiShock client.
  - `ExternalId` string — The client-side flow ID (stored as ExternalId in database).
  - `Name` string — Display name for the flow.
  - `Description` string, nullable — Optional description of the flow's purpose.
  - `IsPublic` boolean, nullable — Whether the flow is public.
  - `Created` string, date-time — When the flow was created on the client.
  - `Modified` string, date-time, nullable — When the flow was last modified on the client.
  - `Nodes` Node[], nullable — List of nodes in the flow.
    - `NodeId` integer
    - `ExternalId` string
    - `Flow` Flow
      - `FlowId` integer
      - `IsPublic` boolean
      - `IsApproved` boolean
      - `ExternalId` string
      - `Name` string
      - `Description` string, nullable
      - `Creator` integer
      - `Created` string, date-time
      - `Modified` string, date-time, nullable
      - `Nodes` Node[]
      - `Connections` Connection[]
        - `ConnectionId` integer
        - `ExternalId` string
        - `FromNode` Node — recursive
        - `FromPortId` string
        - `ToNode` Node — recursive
        - `ToPortId` string
      - `Tags` Tag[]
        - `TagId` integer
        - `Name` string
        - `Flow` Flow — recursive
      - `PluginDependencies` PluginDependency[]
        - `PluginDependencyId` integer
        - `Name` string
        - `ExternalId` string
        - `Link` string, nullable
        - `Version` string, nullable
        - `Flow` Flow — recursive
    - `TypeId` string
    - `X` number, double
    - `Y` number, double
    - `Config` string
    - `DisplayName` string, nullable
    - `Disabled` boolean
  - `Connections` Connection[], nullable — List of connections between nodes.
    - `ConnectionId` integer
    - `ExternalId` string
    - `FromNode` Node
      - `NodeId` integer
      - `ExternalId` string
      - `Flow` Flow
        - `FlowId` integer
        - `IsPublic` boolean
        - `IsApproved` boolean
        - `ExternalId` string
        - `Name` string
        - `Description` string, nullable
        - `Creator` integer
        - `Created` string, date-time
        - `Modified` string, date-time, nullable
        - `Nodes` Node[]
        - `Connections` Connection[]
        - `Tags` Tag[]
          - `TagId` integer
          - `Name` string
          - `Flow` Flow — recursive
        - `PluginDependencies` PluginDependency[]
          - `PluginDependencyId` integer
          - `Name` string
          - `ExternalId` string
          - `Link` string, nullable
          - `Version` string, nullable
          - `Flow` Flow — recursive
      - `TypeId` string
      - `X` number, double
      - `Y` number, double
      - `Config` string
      - `DisplayName` string, nullable
      - `Disabled` boolean
    - `FromPortId` string
    - `ToNode` Node
      - `NodeId` integer
      - `ExternalId` string
      - `Flow` Flow
        - `FlowId` integer
        - `IsPublic` boolean
        - `IsApproved` boolean
        - `ExternalId` string
        - `Name` string
        - `Description` string, nullable
        - `Creator` integer
        - `Created` string, date-time
        - `Modified` string, date-time, nullable
        - `Nodes` Node[]
        - `Connections` Connection[]
        - `Tags` Tag[]
          - `TagId` integer
          - `Name` string
          - `Flow` Flow — recursive
        - `PluginDependencies` PluginDependency[]
          - `PluginDependencyId` integer
          - `Name` string
          - `ExternalId` string
          - `Link` string, nullable
          - `Version` string, nullable
          - `Flow` Flow — recursive
      - `TypeId` string
      - `X` number, double
      - `Y` number, double
      - `Config` string
      - `DisplayName` string, nullable
      - `Disabled` boolean
    - `ToPortId` string
  - `Tags` string[], nullable — Tags for organization.
  - `PluginDependencies` PluginDependency[], nullable — Plugin IDs required to run this flow.
    - `PluginDependencyId` integer
    - `Name` string
    - `ExternalId` string
    - `Link` string, nullable
    - `Version` string, nullable
    - `Flow` Flow
      - `FlowId` integer
      - `IsPublic` boolean
      - `IsApproved` boolean
      - `ExternalId` string
      - `Name` string
      - `Description` string, nullable
      - `Creator` integer
      - `Created` string, date-time
      - `Modified` string, date-time, nullable
      - `Nodes` Node[]
        - `NodeId` integer
        - `ExternalId` string
        - `Flow` Flow — recursive
        - `TypeId` string
        - `X` number, double
        - `Y` number, double
        - `Config` string
        - `DisplayName` string, nullable
        - `Disabled` boolean
      - `Connections` Connection[]
        - `ConnectionId` integer
        - `ExternalId` string
        - `FromNode` Node
          - `NodeId` integer
          - `ExternalId` string
          - `Flow` Flow — recursive
          - `TypeId` string
          - `X` number, double
          - `Y` number, double
          - `Config` string
          - `DisplayName` string, nullable
          - `Disabled` boolean
        - `FromPortId` string
        - `ToNode` Node
          - `NodeId` integer
          - `ExternalId` string
          - `Flow` Flow — recursive
          - `TypeId` string
          - `X` number, double
          - `Y` number, double
          - `Config` string
          - `DisplayName` string, nullable
          - `Disabled` boolean
        - `ToPortId` string
      - `Tags` Tag[]
        - `TagId` integer
        - `Name` string
        - `Flow` Flow — recursive
      - `PluginDependencies` PluginDependency[]

## Response `200`

Success

- UploadFlowResponse — Response model for flow upload.
  - `Success` boolean — Whether the upload was successful.
  - `FlowId` integer, nullable — The database ID of the uploaded flow.
  - `Error` string, nullable — Error message if the upload failed.

## Other responses

- `401` — Unauthorized
- `403` — Forbidden

---

[API](https://skmtc.dev/pishock/apis/pishock-public-api-v1.md) · [All operations](https://skmtc.dev/pishock/apis/pishock-public-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/pishock/pishock-public-api-v1/revisions/271272058af7/schema)
