Reports

Get flow performance

Changed on

One flow's performance over a period: the combined email + SMS stat set plus a per-node breakdown of each email and SMS message step.

Configuration — trigger, filters, re-entry behavior, branch graph — is /v1/flows/{id}. The per-node uuids match that response's node uuids, which is how a message step is placed in the flow graph; a step the flow no longer contains has no counterpart there.

Required scope: reports_read

get/reports/flows/{flow_id}

Request

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

Path parameters

flow_idstring required

The flow's unique identifier (returned as flow_id in report responses and 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.

Query parameters

period'last_7_days' | 'last_30_days' | 'last_90_days' | 'this_month' | 'last_month' | 'custom'

The date range to report over, resolved in the account's time zone. Pass custom together with start_date and end_date.

start_datestring date

Inclusive start of a custom period (ISO 8601 date). Required when period=custom, ignored otherwise.

end_datestring date

Inclusive end of a custom period (ISO 8601 date). Required when period=custom, ignored otherwise. Custom periods are capped at 366 days.

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's performance over the resolved period.

Example response

{
  "data": {
    "flow_id": "Vq7L3mN9xR",
    "title": "Abandoned Cart Recovery",
    "status": "active",
    "trigger_type": "cart_abandoned",
    "trigger_label": "Cart abandoned",
    "channels": "multi",
    "current_enrollment": {
      "value": 42,
      "unit": "count"
    },
    "stats": {
      "sent": {
        "value": 42,
        "unit": "count"
      },
      "delivered": {
        "value": 42,
        "unit": "count"
      },
      "opened": {
        "value": 42,
        "unit": "count"
      },
      "clicked": {
        "value": 42,
        "unit": "count"
      },
      "open_rate": {
        "value": 42,
        "unit": "count"
      },
      "click_rate": {
        "value": 42,
        "unit": "count"
      },
      "attributed_orders": {
        "value": 42,
        "unit": "count"
      },
      "attributed_revenue": {
        "value": 42,
        "unit": "count"
      },
      "order_rate": {
        "value": 42,
        "unit": "count"
      },
      "average_order_value": {
        "value": 42,
        "unit": "count"
      },
      "unsubscribed": {
        "value": 42,
        "unit": "count"
      },
      "bounced": {
        "value": 42,
        "unit": "count"
      },
      "sms_opted_out": {
        "value": 42,
        "unit": "count"
      },
      "sms_failed": {
        "value": 42,
        "unit": "count"
      }
    },
    "period": {
      "label": "last_30_days",
      "start_date": "2026-06-21",
      "end_date": "2026-07-20"
    },
    "nodes": [
      {
        "uuid": "7a2f9e1b-5c3d-4d2e-8b4f-3a6c8d9e0f1a",
        "type": "email",
        "name": "Cart reminder email",
        "subject": "You left something behind",
        "stats": {
          "sent": {
            "value": 42,
            "unit": "count"
          },
          "delivered": {
            "value": 42,
            "unit": "count"
          },
          "opened_unique": {
            "value": 42,
            "unit": "count"
          },
          "clicked_unique": {
            "value": 42,
            "unit": "count"
          },
          "bounced": {
            "value": 42,
            "unit": "count"
          },
          "unsubscribed": {
            "value": 42,
            "unit": "count"
          },
          "opted_out": {
            "value": 42,
            "unit": "count"
          },
          "failed": {
            "value": 42,
            "unit": "count"
          },
          "attributed_orders": {
            "value": 42,
            "unit": "count"
          },
          "attributed_revenue": {
            "value": 42,
            "unit": "count"
          }
        }
      }
    ]
  }
}

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 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

    • warning

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

    • info

      endpoint added