---
title: "POST /environments/{environmentID}/flows/{flowID}#deploy+json"
method: POST
path: "/environments/{environmentID}/flows/{flowID}#deploy+json"
tags: ["DaVinci Admin Flows", "DaVinci Admin APIs", "PingOne DaVinci"]
---

# POST /environments/{environmentID}/flows/{flowID}#deploy+json

`POST /environments/{environmentID}/flows/{flowID}#deploy+json`

## Request

- Base URL: `https://api.pingone.com/v1`
- URL: `https://api.pingone.com/v1/environments/{environmentID}/flows/{flowID}#deploy+json`
- Auth: none declared
- TypeScript: <https://skmtc.dev/pingidentity/apis/pingone-platform-api-2/docs/environments/:environmentID/flows/:flowID%23deploy+json/post.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `environmentID` string, uuid, required
- `flowID` string, required

## Headers

- `X-Ping-External-Session-ID` string
- `X-Ping-External-Transaction-ID` string

## Request body

- ComPingidentityPingoneDavinciFlowsDataDeployFlow

## Response `201`

Successfully created the resource.

- ComPingidentityPingoneDavinciFlowsResponseFlowResponse
  - `_links` object, required
    - `environment` ComPingidentityApiResponseLink, required
      - `href` string, uri, required
      - `name` string
      - `profile` string, uri
      - `title` string, uri
      - `type` string
    - `self` ComPingidentityApiResponseLink, required
      - `href` string, uri, required
      - `name` string
      - `profile` string, uri
      - `title` string, uri
      - `type` string
    - `connectorInstances` ComPingidentityApiResponseLink, required
      - `href` string, uri, required
      - `name` string
      - `profile` string, uri
      - `title` string, uri
      - `type` string
    - `connectors` ComPingidentityApiResponseLink, required
      - `href` string, uri, required
      - `name` string
      - `profile` string, uri
      - `title` string, uri
      - `type` string
    - `flow.deploy` ComPingidentityApiResponseLink, required
      - `href` string, uri, required
      - `name` string
      - `profile` string, uri
      - `title` string, uri
      - `type` string
    - `flow.clone` ComPingidentityApiResponseLink, required
      - `href` string, uri, required
      - `name` string
      - `profile` string, uri
      - `title` string, uri
      - `type` string
    - `flow.enabled` ComPingidentityApiResponseLink, required
      - `href` string, uri, required
      - `name` string
      - `profile` string, uri
      - `title` string, uri
      - `type` string
    - `version` ComPingidentityApiResponseLink, required
      - `href` string, uri, required
      - `name` string
      - `profile` string, uri
      - `title` string, uri
      - `type` string
    - `flow.validate` ComPingidentityApiResponseLink
      - `href` string, uri, required
      - `name` string
      - `profile` string, uri
      - `title` string, uri
      - `type` string
  - `environment` ComPingidentityApiRelationshipPingOneRO, required
    - `id` string, uuid, required
  - `id` string, required
  - `name` string, required
  - `color` string
  - `connectors` ComPingidentityApiRelationshipDaVinciRO[]
    - `id` string, required
  - `createdAt` string, date-time
  - `currentVersion` number
  - `deployedAt` string, date-time
  - `description` string
  - `dvlinterErrorCount` number
  - `dvlinterWarningCount` number
  - `enabled` boolean
  - `graphData` ComPingidentityPingoneDavinciFlowsResponseFragmentGraphData
    - `boxSelectionEnabled` boolean, required
    - `elements` object, required
      - `nodes` object[], required
        - `data` object, required
          - `id` string, required
          - `nodeType` string, required
          - `capabilityName` string
          - `connectionId` string
          - `connectorId` string
          - `idUnique` string
          - `label` string
          - `linterError` object[]
            - `code` string, required
            - `message` string, required
            - `type` string, required
            - `recommendation` string, required
            - `flowId` string, required
            - `nodeId` string
          - `name` string
          - `properties` object
            - `backgroundColor` object
              - …
            - `code` object
              - …
            - `customCSS` object
              - …
            - `customHTML` object
              - …
            - `customScript` object
              - …
            - `formFieldsList` object
              - …
            - `inputSchema` object
              - …
            - `message` object
              - …
            - `nodeTitle` object
              - …
            - `outputSchema` object
              - …
            - `saveVariables` object
              - …
            - `showContinueButton` object
              - …
            - `type` object
              - …
            - `variableInputList` object
              - …
          - `status` string
          - `type` string
        - `grabbable` boolean, required
        - `group` string, required
        - `locked` boolean, required
        - `pannable` boolean, required
        - `position` object, required
          - `x` number, required
          - `y` number, required
        - `removed` boolean, required
        - `selectable` boolean, required
        - `selected` boolean, required
        - `classes` string
      - `edges` object[]
        - `data` object, required
          - `id` string, required
          - `source` string, required
          - `target` string, required
        - `grabbable` boolean, required
        - `group` string, required
        - `locked` boolean, required
        - `pannable` boolean, required
        - `position` object, required
          - `x` number, required
          - `y` number, required
        - `removed` boolean, required
        - `selectable` boolean, required
        - `selected` boolean, required
        - `classes` string
    - `pan` object, required
      - `x` number, required
      - `y` number, required
    - `panningEnabled` boolean, required
    - `renderer` object, required
      - `name` string, required
    - `userPanningEnabled` boolean, required
    - `userZoomingEnabled` boolean, required
    - `zoom` number, required
    - `allLinterErrors` object[]
      - `code` string, required
      - `message` string, required
      - `type` string, required
      - `recommendation` string, required
      - `flowId` string, required
      - `nodeId` string
    - `data` object
    - `maxZoom` number
    - `minZoom` number
    - `zoomingEnabled` boolean
  - `inputSchema` object[]
    - `preferredControlType` string, required
    - `preferredDataType` 'array' | 'boolean' | 'number' | 'object' | 'string', required
    - `propertyName` string, required
    - `description` string
    - `isExpanded` boolean
    - `required` boolean
  - `outputSchema` ComPingidentityPingoneDavinciFlowsResponseFragmentOutputSchema
    - `output` object, required
      - `properties` object, required
      - `type` 'object', required
      - `additionalProperties` boolean
  - `publishedVersion` number
  - `settings` ComPingidentityPingoneDavinciFlowsResponseFragmentSettings
    - `csp` string
    - `css` string
    - `cssLinks` string[]
    - `customErrorScreenBrandLogoUrl` string
    - `customErrorShowFooter` union
      - boolean
      - 'false' | 'true'
    - `customFaviconLink` string
    - `customLogoURLSelection` integer
    - `customTitle` string
    - `defaultErrorScreenBrandLogo` union
      - boolean
      - 'false' | 'true'
    - `flowHttpTimeoutInSeconds` integer
    - `flowTimeoutInSeconds` number
    - `intermediateLoadingScreenCSS` union
      - string
      - object
    - `intermediateLoadingScreenHTML` union
      - string
      - object
    - `jsCustomFlowPlayer` string
    - `jsLinks` object[]
      - `crossorigin` string, required
      - `defer` union, required
        - boolean
        - 'false' | 'true'
      - `integrity` string, required
      - `label` string, required
      - `referrerpolicy` string, required
      - `type` string, required
      - `value` string, required
    - `logLevel` integer
    - `requireAuthenticationToInitiate` union
      - boolean
      - 'false' | 'true'
    - `scrubSensitiveInfo` union
      - boolean
      - 'false' | 'true'
    - `sensitiveInfoFields` string[]
    - `useCSP` union
      - boolean
      - 'false' | 'true'
    - `useCustomCSS` union
      - boolean
      - 'false' | 'true'
    - `useCustomFlowPlayer` union
      - boolean
      - 'false' | 'true'
    - `useCustomScript` union
      - boolean
      - 'false' | 'true'
    - `useIntermediateLoadingScreen` union
      - boolean
      - 'false' | 'true'
    - `validateOnSave` union
      - boolean
      - 'false' | 'true'
  - `trigger` ComPingidentityPingoneDavinciFlowsResponseFragmentTrigger
    - `type` 'AUTHENTICATION' | 'SCHEDULE', required
    - `configuration` object
      - `mfa` object, required
        - `enabled` boolean, required
        - `time` number, required
        - `timeFormat` string, required
      - `pwd` object, required
        - `enabled` boolean, required
        - `time` number, required
        - `timeFormat` string, required
  - `updatedAt` string, date-time

## Other responses

- `400`: Bad Request
- `401`: Unauthorized
- `403`: Forbidden - Note: This may occur if the environment doesn't exist. Check for environment existence with GET /environments/{environmentID} first. - Note: This may be due to eventual consistency if the environment was recently created. Try again after a short delay.
- `404`: Not Found - Note: This may be due to eventual consistency if the environment was recently created. Try again after a short delay.
- `415`: Unsupported Media Type
- `429`: Too Many Requests
- `500`: Internal Server Error
- `502`: Bad Gateway
- `503`: Service Unavailable

## Changes

- **2025-12-01** (3.1) `6581e0a8e178`: 11 breaking, 2 info
  - response property `settings/customErrorShowFooter` list-of-types was widened by adding types `string` to media type `application/json` of response `201`
  - response property `settings/defaultErrorScreenBrandLogo` list-of-types was widened by adding types `string` to media type `application/json` of response `201`
  - response property `settings/jsLinks/items/defer` list-of-types was widened by adding types `string` to media type `application/json` of response `201`
  - response property `settings/requireAuthenticationToInitiate` list-of-types was widened by adding types `string` to media type `application/json` of response `201`
  - …9 more
- **2025-11-18** (3.1) `386d2d092d61`: 6 breaking
  - the response property `graphData/maxZoom` became optional for the status `201`
  - the response property `graphData/minZoom` became optional for the status `201`
  - the response property `id` became optional for the status `429`
  - the `id` response property's minLength was decreased from `1` to `0` for the response status `429`
  - …2 more
- **2025-11-06** (3.1) `a03eedb1a80f`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/pingidentity/apis/pingone-platform-api-2/changes/environments/:environmentID/flows/:flowID%23deploy+json/post.md)

---

[API](https://skmtc.dev/pingidentity/apis/pingone-platform-api-2.md) - [All operations](https://skmtc.dev/pingidentity/apis/pingone-platform-api-2/llms.txt) - [OpenAPI document](https://skmtc.dev/pingidentity/apis/pingone-platform-api-2/revisions/6ad8bc078fb8?raw)
