hog_flows

patch/api/projects/{project_id}/hog_flows/{id}/graph/

Request

  • Base URL: https://us.posthog.com
  • URL: https://us.posthog.com/api/projects/{project_id}/hog_flows/{id}/graph/
  • Auth: HTTP bearer

Path parameters

idstring uuid required

A UUID string identifying this hog flow.

project_idstring required

Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.

Request body

base_updated_atstring date-time

Optimistic concurrency: the updated_at (or draft_updated_at) last loaded. If the stored graph is newer, the patch is rejected with 409 instead of clobbering a concurrent edit.

Response

idstring uuid required
namestring nullable

Workflow name.

descriptionstring

Optional description.

versioninteger required
status'draft' | 'active' | 'archived'
  • draft - Draft
  • active - Active
  • archived - Archived
created_atstring date-time required
updated_atstring date-time required
triggerunknown required
exit_condition'exit_on_conversion' | 'exit_on_trigger_not_matched' | 'exit_on_trigger_not_matched_or_conversion' | 'exit_only_at_end'
  • exit_on_conversion - Conversion
  • exit_on_trigger_not_matched - Trigger Not Matched
  • exit_on_trigger_not_matched_or_conversion - Trigger Not Matched Or Conversion
  • exit_only_at_end - Only At End
abort_actionstring nullable required
variablesobject[]

Workflow vars (key, type, default). Total <5KB.

billable_action_typesunknown required
user_access_levelstring nullable required

The effective access level the user has for this object

draftunknown required
draft_updated_atstring date-time nullable required

When the draft was last written; null when there's no staged draft. Pass this to publish (and as base_updated_at on further draft edits) so a concurrent editor's changes aren't clobbered — a mismatch returns 409.

action_redirectsobject nullable required

Skip-forward map for deleted steps: {deleted_action_id: next surviving action_id}. Maintained automatically when a live graph edit deletes actions, so in-flight runs parked on a deleted step continue at its surviving successor instead of exiting. Null when no live deletions have occurred.

email_sending_paused_atstring date-time nullable required

When PostHog paused this workflow's email automatically because its spam complaint or hard bounce rate crossed a threshold. Null when sending is not paused. Read-only: only the resume_email_sending endpoint clears a pause, so a normal update or publish can't lift it.

email_sending_paused_reasonstring required

Plain-language reason for the pause, naming the signal and the window. Empty when not paused.

email_sending_paused_bystring required

Who paused it: "auto" for the deliverability detector, "staff" for PostHog staff. A staff pause can only be resumed by staff, so the resume endpoint refuses it. Empty when not paused.

email_sending_pause_requires_supportboolean required

True when only PostHog staff can lift the current pause: staff placed it, or it landed shortly after a resume, so another self-serve resume is not offered. False when not paused or when the resume endpoint would accept the caller.

email_sending_resumed_atstring date-time nullable required

When sending was last resumed. Every detector window starts after this, so resuming does not immediately re-trip on the feedback that caused the pause. Null if never paused.

Changes

No recorded changes to this operation across all 1 revision of this API.