Flows

Get Flows

GET https://api.YOUR_TENANT.appmixer.cloud/flows

Return all flows of a user. curl "https://api.appmixer.com/flows" -H "Authorization: Bearer [ACCESS_TOKEN]"

Query Parameters

Name
Type
Description

filter

string

Filter flows by their property values. Example: "userId:123abc" returns only flows who's owner is the user with ID "123abc" (i.e. shared flows are excluded). Note that you can also search on nested fields. This is especially useful with the customFields metadata object. For example: "filter=customFields.category:healthcare".

sharedWithPermissions

string

Filter flows by their sharing setting. Example: "read,start". All possible permission are currently "read", "start", "stop".

projection

string

Exclude flow object properties. Example: "-flow,-thumbnail".

sort

string

Sorting parameter. Can be any flow object property followed by semicolon and 1 (ascending), -1 (descending). Example: "mtime:-1".

pattern

string

A term to filter flows containing pattern in their name or flowId property.

offset

number

The index of the first item returned. Default is 0. Useful for paging.

limit

number

Maximum items returned. Default is 100. Useful for paging.

[
  {
    "userId": "58593f07c3ee4f239dc69ff7",
    "flowId": "9089f275-f5a5-4796-ba23-365412c5666e",
    "stage": "stopped",
    "name": "Flow #4",
    "btime": "2018-03-29T19:24:08.950Z",
    "mtime": "2018-04-05T12:50:15.952Z",
    "sharedWith": [{
      "email": "[email protected]",
      "permissions": ["read", "start", "stop"]
    }],
    "flow": {
      "e15ef119-8fcb-459b-aaae-2a3f9ee41f15": {
        "type": "appmixer.utils.http.Uptime",
        "label": "Uptime",
        "source": {},
        "x": 110,
        "y": 90,
        "config": {}
      },
      "43f1f63a-ecd2-42dc-a618-8c96b4acc767": {
        "type": "appmixer.utils.email.SendEmail",
        "label": "SendEmail",
        "source": {
          "in": {
            "e15ef119-8fcb-459b-aaae-2a3f9ee41f15": [
              "up"
            ]
          }
        },
        "x": 320,
        "y": -10,
        "config": {
          "transform": {
            "in": {
              "e15ef119-8fcb-459b-aaae-2a3f9ee41f15": {
                "up": {
                  "type": "json2new",
                  "lambda": {
                    "from_email": "[email protected]",
                    "text": "Site {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.up.target}}} is back UP.\nDowntime: {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.up.downTimeText}}}\nHTTP Status Code: {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.up.statusCode}}}",
                    "subject": "Appmixer: Site UP ({{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.up.target}}})"
                  }
                }
              }
            }
          }
        }
      },
      "416150af-b0d4-4d06-8ad1-75b17e578532": {
        "type": "appmixer.utils.email.SendEmail",
        "label": "SendEmail",
        "source": {
          "in": {
            "e15ef119-8fcb-459b-aaae-2a3f9ee41f15": [
              "down"
            ]
          }
        },
        "x": 320,
        "y": 195,
        "config": {
          "transform": {
            "in": {
              "e15ef119-8fcb-459b-aaae-2a3f9ee41f15": {
                "down": {
                  "type": "json2new",
                  "lambda": {
                    "from_email": "[email protected]",
                    "subject": "Appmixer: Site DOWN ({{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.down.target}}})",
                    "text": "Site {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.down.target}}} is DOWN.\nHTTP Status Code: {{{$.e15ef119-8fcb-459b-aaae-2a3f9ee41f15.down.statusCode}}}"
                  }
                }
              }
            }
          }
        }
      }
    },
    "mode": "module",
    "thumbnail": "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D...",
    "started": "2018-04-05T12:33:15.357Z"
  },
  {
    "userId": "58593f07c3ee4f239dc69ff7",
    "flowId": "93198d48-e680-49bb-855c-58c2c11d1857",
    "stage": "stopped",
    "name": "Flow #5",
    "btime": "2018-04-03T15:48:52.730Z",
    "mtime": "2018-04-11T07:41:22.767Z",
    "flow": {
      "ce0742f4-4f72-4ea2-bea6-62cfaa2def86": {
        "type": "appmixer.utils.email.SendEmail",
        "label": "SendEmail",
        "source": {
          "in": {
            "3d71d67f-df0b-4723-bf85-20c97f6eaff6": [
              "weather"
            ]
          }
        },
        "x": 485,
        "y": 95,
        "config": {
          "transform": {
            "in": {
              "3d71d67f-df0b-4723-bf85-20c97f6eaff6": {
                "weather": {
                  "type": "json2new",
                  "lambda": {
                    "from_email": "[email protected]",
                    "subject": "Appmixer: Current Weather",
                    "text": "Temperature: {{{$.3d71d67f-df0b-4723-bf85-20c97f6eaff6.weather.main.temp}}} dgC\nPressure: {{{$.3d71d67f-df0b-4723-bf85-20c97f6eaff6.weather.main.pressure}}} hPa\nHumidity: {{{$.3d71d67f-df0b-4723-bf85-20c97f6eaff6.weather.main.humidity}}}%\nCloudiness: {{{$.3d71d67f-df0b-4723-bf85-20c97f6eaff6.weather.clouds.all}}}%",
                    "to": ""
                  }
                }
              }
            }
          }
        }
      },
      "3d71d67f-df0b-4723-bf85-20c97f6eaff6": {
        "type": "appmixer.utils.weather.GetCurrentWeather",
        "label": "GetCurrentWeather",
        "source": {
          "location": {
            "b4d1ddbc-4bed-4de3-8fe1-9d9542d03cf0": [
              "out"
            ]
          }
        },
        "x": 290,
        "y": 95,
        "config": {
          "transform": {
            "location": {
              "b4d1ddbc-4bed-4de3-8fe1-9d9542d03cf0": {
                "out": {
                  "type": "json2new",
                  "lambda": {
                    "city": "Prague",
                    "units": "metric"
                  }
                }
              }
            }
          }
        }
      },
      "b4d1ddbc-4bed-4de3-8fe1-9d9542d03cf0": {
        "type": "appmixer.utils.controls.OnStart",
        "label": "OnStart",
        "source": {},
        "x": 105,
        "y": 95,
        "config": {}
      }
    },
    "mode": "module",
    "thumbnail": "data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20xmlns%3Axlink%3D...",
    "started": "2018-04-06T12:59:29.631Z"
  }
]

Get Flow

GET https://api.YOUR_TENANT.appmixer.cloud/flows/:id

Return one flow. curl "https://api.appmixer.com/flows/9089f275-f5a5-4796-ba23-365412c5666e" -H "Authorization: Bearer [ACCESS_TOKEN]"

Path Parameters

Name
Type
Description

id

string

Get Flows Count

GET https://api.YOUR_TENANT.appmixer.cloud/flows/count

Return the number of all flows of a user. curl "https://api.appmixer.com/flows/count" -H "Authorization: Bearer [ACCESS_TOKEN]"

Create Flow

POST https://api.YOUR_TENANT.appmixer.cloud/flows

Create a new flow. curl -XPOST "https://api.appmixer.com/flows" -H "Content-Type: application/json" -d '{ "flow": FLOW_DESCRIPTOR, "name": "My Flow #1", "customFields": { "category": "healthcare" } }'

Request Body

Name
Type
Description

name

string

Name of the flow.

customFields

object

An object with any custom properties. This is useful for storing any custom metadata and later using the metadata values to filter returned flows.

thumbnail

string

Flow thumbnail image.

flow

object

Flow descriptor.

wizard

object

Wizard configuration for Integration Templates. See Flow Wizard for the full schema.

notes

object

Note blocks displayed in the Designer canvas. See Flow Notes for the full schema.

Update Flow

PUT https://api.YOUR_TENANT.appmixer.cloud/flows/:id

Update an existing flow. curl -XPUT "https://api.appmixer.com/flows/9089f275-f5a5-4796-ba23-365412c5666e" -H "Content-Type: application/json" -d '{ "flow": FLOW_DESCRIPTOR, "name": "My Flow #2" }'

Path Parameters

Name
Type
Description

id

string

Flow ID.

Query Parameters

Name
Type
Description

forceUpdate

boolean

A running flow cannot be updated unless forceUpdate=true.

Request Body

Name
Type
Description

object

An object with flow, name, customFields, thumbnail, sharedWith, wizard, and notes parameters. flow is the Flow descriptor. See Flow Notes for the notes schema.

Delete Flow

DELETE https://api.YOUR_TENANT.appmixer.cloud/flows/:id

Delete an existing flow. curl -XDELETE "https://api.appmixer.com/flows/9089f275-f5a5-4796-ba23-365412c5666e" -H "Authorization: Bearer [ACCESS_TOKEN]"

Path Parameters

Name
Type
Description

id

string

Flow ID.

Clone Flow

POST https://api.YOUR_TENANT.appmixer.cloud/flows/:id/clone

Clone a flow

Path Parameters

Name
Type
Description

id*

String

Flow ID

Request Body

Name
Type
Description

prefix

String

Prefix for flow clone name. The original flow name will be used with this prefix as a name for the new flow.

projection

String

Properties to be filtered from the flow model.

Example: "-thumbnail,-sharedWith". With this projection string, the thumbnail and sharedWith property will not be cloned.

connectAccounts

Boolean

If user accounts (like Gmail account for SendEmail component) connected to the source flow components should also be connected to cloned flow components. Default is false. Accounts can be connected only if the owner of the cloned flow is the same as the owner of the original flow.

isTemplateInstance

Boolean

If source flow is an instance of template (related to Integrations). Default is false

setOriginFlowId

Boolean

Default false. If true, the originFlowId property of the clone will be set to the original flow.

setComponentIdMap

Boolean

Default true. Stores a map of the component IDs from the original flow to the component IDs in the clone. This is later used in Integrations when performing updates of the Integration Templates.

additional

Object

sharedWith, type and wizard properties can be set in this object.

Flow Drafts

Flow Drafts allow you to create editable versions of flows without affecting the original running flow. Drafts are primarily used for making changes to integration instances while the original continues to run.

Overview

  • Draft Types: automation-draft and integration-instance-draft

  • Workflow: Create draft → Make changes → Publish to update original flow

  • Safety: Only one draft per flow can exist at a time

  • Component ID Mapping: Drafts maintain a mapping to original component IDs for seamless publishing

Create a Draft

POST http://[API-URL]/flows/:id/clone

Create a draft by cloning an existing flow with special draft parameters.

Path Parameters

Name
Type
Description

id*

String

Flow ID to create draft from

Request Body

Name
Type
Description

setOriginFlowId*

Boolean

Must be true to link draft to original flow

setComponentIdMap*

Boolean

Must be true to map component IDs for publishing

connectAccounts*

Boolean

Recommended true to copy account connections

additional*

Object

Must include type field set to "automation-draft" or "integration-instance-draft"

circle-info

Draft Uniqueness

The API ensures only one draft per flow and type can exist. If you attempt to create a draft when one already exists, the API returns the existing draft's ID instead of creating a duplicate.

Publish a Draft

POST http://[API-URL]/drafts/:draftFlowId/publish

Publish a draft to update the original flow with the draft's changes.

Path Parameters

Name
Type
Description

draftFlowId*

String

Draft flow ID to publish

Publishing Process

When you publish a draft, the following operations occur automatically:

  1. Component ID Mapping: Draft component IDs are mapped back to the original flow's component IDs

  2. Flow Update: The original flow is updated with the draft's configuration

  3. Draft Deletion: The draft flow is automatically deleted after successful publishing

  4. Account Connections: If accounts were connected during draft creation, they are preserved

circle-exclamation

Use Cases

Editing Integration Instances

  • Create a draft of a running integration instance

  • Make and test changes in the draft without affecting the live instance

  • Publish when ready to update the running instance

Start/Stop Flow

POST https://api.YOUR_TENANT.appmixer.cloud/flows/:id/coordinator

Start or stop an existing flow. curl -XPOST "https://api.appmixer.com/flows/9089f275-f5a5-4796-ba23-365412c5666e" -H "Content-Type: application/json" -d '{ "command": "start" }'

Path Parameters

Name
Type
Description

id

string

Flow ID.

Query Parameters (only for the stop command)

Name
Type
Description

background

boolean

Will trigger the stop command, but won't wait for it to finish. Then you can use GET /flows/{flowId}/coordinator/status to check the status of that operation.

Request Body

Name
Type
Description

command

string

The command to send to the flow coordinator. It can be either "start" or "stop".

Get the status of the stop flow command

GET https://api.YOUR_TENANT.appmixer.cloud/flows/{flowId}/coordinator/status

Send GET request to a component

GET https://api.YOUR_TENANT.appmixer.cloud/flows/:flowId/components/:componentId

Query Parameters

Name
Type
Description

enqueueOnly

Boolean

If "true" then the response to this request will be returned as soon as the requests is enqueued in the engine. It will not wait for the component to process the request and create the response. The response code is 202 in this case. The default value is "false".

Send POST request to a component

POST https://api.YOUR_TENANT.appmixer.cloud/flows/:flowId/components/:componentId

Query Parameters

Name
Type
Description

enqueueOnly

Boolean

If "true" then the response to this request will be returned as soon as the requests is enqueued in the engine. It will not wait for the component to process the request and create the response. The response code is 202 in this case. The default value is "false".

Send PUT request to a component

PUT https://api.YOUR_TENANT.appmixer.cloud/flows/:flowId/components/:componentId

Query Parameters

Name
Type
Description

enqueueOnly

Boolean

If "true" then the response to this request will be returned as soon as the requests is enqueued in the engine. It will not wait for the component to process the request and create the response. The response code is 202 in this case. The default value is "false".

Flow Notes

The notes property holds the definitions of note blocks displayed on the Designer canvas. Notes are purely visual — they let flow authors annotate a canvas with Markdown-formatted text to explain intent, guide end-users, or document template behaviour.

The Designer writes this object automatically when notes are created or edited. You can also construct or patch it programmatically via the Create Flow and Update Flow endpoints.

The notes object

notes is a map of note ID → note object. Each key is a UUID that uniquely identifies the note block.

Note object properties

Property
Type
Description

x

number

Horizontal position of the note block on the canvas (pixels, can be negative).

y

number

Vertical position of the note block on the canvas (pixels, can be negative).

width

number

Width of the note block in pixels.

height

number

Height of the note block in pixels.

content

string

Full CommonMark Markdown displayed inside the note block. Supports headings, bold, italic, inline code, fenced code blocks, links, images, tables, and lists.

Flow Wizard

A flow becomes an Integration Template when it has a non-empty wizard property. The wizard object defines the configuration form that end-users fill in when they activate an integration — rendered by the appmixer.ui.Wizard widget.

The Wizard Builder in the Designer writes this object automatically. For programmatic template creation — importing templates, scripting bulk updates, or building custom tooling — you can construct or patch the wizard field directly via the Create Flow and Update Flow endpoints.

The wizard object

fields is an ordered array of field objects. The Wizard widget renders them top to bottom. Authentication (account) fields are always sorted to the top of the form regardless of their position in the array.

Field reference

Every field object shares a common set of properties:

Property
Type
Description

type

string

Field type. See the field types below.

label

string

Label shown to the end-user.

tooltip

string

Optional tooltip text.

placeholder

string

Optional input placeholder text.

source

string

Path to the bound component input: <componentId>.<descriptorPath>. Not used by all field types.

attrs

object

Type-specific attributes. Shape varies by type — see below.

options

object

Additional display or behaviour options.

inspectorField

Exposes a single component input field to the end-user. This is the most common field type.

source format: <componentId>.<descriptorPath>, where descriptorPath mirrors the config transform path in the flow descriptor — for example a0828f32.config.transform.in.76a77abf.out.lambda.channelId.

account

Renders an account/authentication selector for one or more components that share the same auth service. Account fields are always displayed at the top of the Wizard form.

attrs property

Type

Description

service

string

The auth service identifier, e.g. "appmixer:slack".

components

string[]

IDs of flow components that should use the selected account.

sharedAccountId

string

Optional. When set, the Wizard pre-selects a specific shared account instead of prompting.

customField

A field not bound to a specific component inspector input. Useful for injecting arbitrary data into a flow (e.g. via customFields).

attrs property

Type

Description

type

string

Input type, e.g. "text".

path

string

Data path the value is written to.

placeholder

string

Input placeholder.

searchPlaceholder

string

Placeholder for searchable select inputs.

service

string

Optional linked auth service.

components

string[]

Optional linked component IDs.

options

object

Custom options passed to the field renderer.

params

object

Custom parameters passed to the field renderer.

text

A non-interactive content block — a heading or informational paragraph displayed inside the Wizard form.

attrs property

Type

Description

format

string

Content format, e.g. "header".

text

string

The text content to display.

image

A static image displayed inside the Wizard form.

attrs property

Type

Description

image

string

Image URL or path.

Complete example

The following example creates an Integration Template programmatically. The flow has a Scheduler component (76a77abf) and a Slack SendChannelMessage component (a0828f32). The wizard exposes the Slack account selector and two input fields — the scheduled hour and the Slack channel.

Filtering Integration Templates

An Integration Template is a flow that has a non-empty wizard property and no templateId property. To list all published templates:

To list a user's integration instances (flows created from a template):

circle-info

For a guided walkthrough of building and publishing templates using the no-code Studio, see Build and Publish a Template.

Send DELETE request to a component

DELETE https://api.appmixer.com/flows/:flowId/components/:componentId

Query Parameters

Name
Type
Description

enqueueOnly

Boolean

If "true" then the response to this request will be returned as soon as the requests is enqueued in the engine. It will not wait for the component to process the request and create the response. The response code is 202 in this case. The default value is

"false".

Last updated

Was this helpful?