Flows

Retrieve a single flow by its identifier, including its full configuration: re-entry behavior, flow filters, effective exit behavior, a server-generated behavior summary, and the node tree — each step's configuration (data) plus the branch graph, with split conditions and the nodes on each branch.

exit_behavior and reentry state the engine's effective semantics directly: exits end only journeys already in progress (the enrolling event never triggers them), and reentry.mode says explicitly whether and when a contact can go through again. Trust these fields and behavior_summary over inferences from the node structure.

Required scope: flows_read

get/flows/{id}

Request

  • Base URL
    https://api.privy.com/v1
  • Auth
    HTTP bearer

Path parameters

idstring required

The flow's unique identifier (returned as id in flow responses). Ids are opaque public strings — a numeric id from a Privy dashboard URL is not a valid API id and will 404; list flows and match by title instead.

Headers

Privy-Account-Idstring

Target a subaccount instead of the main connected account. Pass a subaccount id from get_account's subaccounts list. Only direct subaccounts of the connected account are reachable — omit this for the main account itself.

Response

The flow.

Example response

{
  "data": {
    "id": "Vq7L3mN9xR",
    "title": "Abandoned Cart Recovery",
    "status": "active",
    "trigger_type": "cart_abandoned",
    "trigger_label": "Cart abandoned",
    "nodes": [
      {
        "uuid": "6f1e8d0a-4b2c-4c1d-9a3e-2f5b7c8d9e0f",
        "type": "email",
        "name": "Welcome email",
        "next_uuid": "7a2f9e1b-5c3d-4d2e-8b4f-3a6c8d9e0f1a",
        "yes_next_uuid": "7a2f9e1b-5c3d-4d2e-8b4f-3a6c8d9e0f1a",
        "no_next_uuid": "9c4d1a3e-7e5f-4f4a-8d6b-5c8e0f1a2b3c",
        "a_next_uuid": "7a2f9e1b-5c3d-4d2e-8b4f-3a6c8d9e0f1a",
        "b_next_uuid": "9c4d1a3e-7e5f-4f4a-8d6b-5c8e0f1a2b3c",
        "data": {
          "delay_unit": "hours",
          "delay_unit_count": 1
        }
      }
    ],
    "last_transition_at": "2026-06-01T12:00:00Z",
    "reentry": {
      "mode": "after_delay",
      "frequency": 30,
      "unit": "days"
    },
    "flow_filters": {
      "operation": "AND",
      "conditions": [
        {
          "property": "segment",
          "operator": "contains",
          "type": "array",
          "value": [
            "Nk2P5rW8yU"
          ]
        }
      ]
    },
    "exit_behavior": {
      "exit_events": [
        "order_placed",
        "order_delivered"
      ],
      "summary": "After enrollment, a subsequent order placed or order delivered event ends the journey early. The event that enrolled the contact never triggers this exit."
    },
    "behavior_summary": "A contact enrolls when the \"Cart abandoned\" event occurs. The flow has 2 message steps. A subsequent order placed or order delivered event ends an active journey early; the event that enrolled the contact never triggers this exit. A contact can re-enter 30 days after their previous journey ends; no setting ever runs two journeys at once."
  }
}

Changes

    • warning

      added the new forbidden enum value to the / response property for the response status

    • warning

      added the new forbidden enum value to the / response property for the response status

    • warning

      added the new forbidden enum value to the / response property for the response status

    • warning

      added the new forbidden enum value to the / response property for the response status

    • warning

      added the new segment_builder_required enum value to the / response property for the response status

    • warning

      added the new segment_builder_required enum value to the / response property for the response status

    • warning

      added the new segment_builder_required enum value to the / response property for the response status

    • warning

      added the new segment_builder_required enum value to the / response property for the response status

    • info

      endpoint added