PostHog actions API

The actions API from PostHog — 4 operation(s) for actions.

Operations 8

GET /api/projects/{project_id}/actions/ #
POST /api/projects/{project_id}/actions/ #
GET /api/projects/{project_id}/actions/{id}/ #
PUT /api/projects/{project_id}/actions/{id}/ #
PATCH /api/projects/{project_id}/actions/{id}/ #
DELETE /api/projects/{project_id}/actions/{id}/ #
GET /api/projects/{project_id}/actions/{id}/references/ #
POST /api/projects/{project_id}/actions/bulk_update_tags/ #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/posthog-actions-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Discovery needs no key. Ratings and market analysis are Pro.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

posthog-actions-api-openapi.yml Raw ↑
openapi: 3.2.0
info:
  title: PostHog Actions API
  version: 1.0.0
  description: ''
servers:
- url: https://app.posthog.com/api
  description: Base URL declared by the provider in apis.yml (roadmap#122).
tags:
- name: actions
paths:
  /api/projects/{project_id}/actions/:
    get:
      operationId: actions_list
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - name: limit
        required: false
        in: query
        description: Number of results to return per page.
        schema:
          type: integer
      - name: offset
        required: false
        in: query
        description: The initial index from which to return the results.
        schema:
          type: integer
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - actions
      security:
      - PersonalAPIKeyAuth:
        - action:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PaginatedActionList'
            text/csv:
              schema:
                $ref: '#/components/schemas/PaginatedActionList'
          description: ''
      x-explicit-tags:
      - actions
    post:
      operationId: actions_create
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Action'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Action'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Action'
      security:
      - PersonalAPIKeyAuth:
        - action:write
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Action'
            text/csv:
              schema:
                $ref: '#/components/schemas/Action'
          description: ''
      x-explicit-tags:
      - actions
  /api/projects/{project_id}/actions/{id}/:
    get:
      operationId: actions_retrieve
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this action.
        required: true
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - actions
      security:
      - PersonalAPIKeyAuth:
        - action:read
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Action'
            text/csv:
              schema:
                $ref: '#/components/schemas/Action'
          description: ''
      x-explicit-tags:
      - actions
    put:
      operationId: actions_update
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this action.
        required: true
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/Action'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Action'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/Action'
      security:
      - PersonalAPIKeyAuth:
        - action:write
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Action'
            text/csv:
              schema:
                $ref: '#/components/schemas/Action'
          description: ''
      x-explicit-tags:
      - actions
    patch:
      operationId: actions_partial_update
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this action.
        required: true
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/PatchedAction'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/PatchedAction'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/PatchedAction'
      security:
      - PersonalAPIKeyAuth:
        - action:write
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Action'
            text/csv:
              schema:
                $ref: '#/components/schemas/Action'
          description: ''
      x-explicit-tags:
      - actions
    delete:
      operationId: actions_destroy
      description: Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this action.
        required: true
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - actions
      security:
      - PersonalAPIKeyAuth:
        - action:write
      responses:
        '405':
          description: No response body
      x-explicit-tags:
      - actions
  /api/projects/{project_id}/actions/{id}/references/:
    get:
      operationId: actions_references_list
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - in: path
        name: id
        schema:
          type: integer
        description: A unique integer value identifying this action.
        required: true
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - actions
      security:
      - PersonalAPIKeyAuth:
        - action:read
      responses:
        '200':
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActionReference'
            text/csv:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ActionReference'
          description: ''
      x-explicit-tags:
      - actions
  /api/projects/{project_id}/actions/bulk_update_tags/:
    post:
      operationId: actions_bulk_update_tags_create
      description: 'Bulk update tags on multiple objects.


        Accepts:

        - {"ids": [...], "action": "add"|"remove"|"set", "tags": ["tag1", "tag2"]}


        Actions:

        - "add": Add tags to existing tags on each object

        - "remove": Remove specific tags from each object

        - "set": Replace all tags on each object with the provided list'
      parameters:
      - in: query
        name: format
        schema:
          type: string
          enum:
          - csv
          - json
      - $ref: '#/components/parameters/ProjectIdPath'
      tags:
      - actions
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BulkUpdateTagsRequest'
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/BulkUpdateTagsRequest'
          multipart/form-data:
            schema:
              $ref: '#/components/schemas/BulkUpdateTagsRequest'
        required: true
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BulkUpdateTagsResponse'
            text/csv:
              schema:
                $ref: '#/components/schemas/BulkUpdateTagsResponse'
          description: ''
      x-explicit-tags:
      - actions
components:
  schemas:
    ActionReference:
      type: object
      properties:
        type:
          type: string
          description: 'Resource type: insight, experiment, cohort, or hog_function'
        id:
          type: string
          description: Resource ID (integer or UUID depending on type)
        name:
          type: string
          description: Resource name
        url:
          type: string
          description: Relative URL to the resource
        created_at:
          type:
          - string
          - 'null'
          format: date-time
          description: When the resource was created
        created_by:
          allOf:
          - $ref: '#/components/schemas/UserBasic'
          description: User who created the resource
      required:
      - created_at
      - created_by
      - id
      - name
      - type
      - url
    NumericPropertyFilter:
      type: object
      description: Matches numeric values with comparison operators.
      properties:
        key:
          type: string
          description: Key of the property you're filtering on. For example `email` or `$current_url`.
        type:
          allOf:
          - $ref: '#/components/schemas/PropertyFilterTypeEnum'
          default: event
          description: 'Property type (event, person, session, etc.).


            * `event` - event

            * `event_metadata` - event_metadata

            * `feature` - feature

            * `person` - person

            * `cohort` - cohort

            * `element` - element

            * `static-cohort` - static-cohort

            * `dynamic-cohort` - dynamic-cohort

            * `precalculated-cohort` - precalculated-cohort

            * `group` - group

            * `recording` - recording

            * `log_entry` - log_entry

            * `behavioral` - behavioral

            * `session` - session

            * `hogql` - hogql

            * `data_warehouse` - data_warehouse

            * `data_warehouse_person_property` - data_warehouse_person_property

            * `error_tracking_issue` - error_tracking_issue

            * `log` - log

            * `log_attribute` - log_attribute

            * `log_resource_attribute` - log_resource_attribute

            * `span` - span

            * `span_attribute` - span_attribute

            * `span_resource_attribute` - span_resource_attribute

            * `revenue_analytics` - revenue_analytics

            * `flag` - flag

            * `workflow_variable` - workflow_variable'
        value:
          type: number
          format: double
          description: Numeric value to compare against.
        operator:
          allOf:
          - $ref: '#/components/schemas/NumericPropertyFilterOperatorEnum'
          default: exact
          description: 'Numeric comparison operator.


            * `exact` - exact

            * `is_not` - is_not

            * `gt` - gt

            * `lt` - lt

            * `gte` - gte

            * `lte` - lte'
      required:
      - key
      - value
    ActionStepMatchingEnum:
      enum:
      - contains
      - regex
      - exact
      type: string
      description: '* `contains` - contains

        * `regex` - regex

        * `exact` - exact'
    NullEnum:
      enum:
      - null
    ActionStepJSON:
      type: object
      properties:
        event:
          type:
          - string
          - 'null'
          description: Event name to match (e.g. '$pageview', '$autocapture', or a custom event name).
        properties:
          type:
          - array
          - 'null'
          items:
            $ref: '#/components/schemas/ActionStepPropertyFilter'
          description: Event or person property filters. Each item should have 'key' (string), 'value' (string, number, boolean, or array), optional 'operator' (exact, is_not, is_set, is_not_set, icontains, not_icontains, regex, not_regex, gt, gte, lt, lte), and optional 'type' (event, person).
        selector:
          type:
          - string
          - 'null'
          description: CSS selector to match the target element (e.g. 'div > button.cta').
        selector_regex:
          type:
          - string
          - 'null'
          readOnly: true
        tag_name:
          type:
          - string
          - 'null'
          description: HTML tag name to match (e.g. "button", "a", "input").
        text:
          type:
          - string
          - 'null'
          description: Element text content to match.
        text_matching:
          description: 'How to match the text value. Defaults to exact.


            * `contains` - contains

            * `regex` - regex

            * `exact` - exact'
          oneOf:
          - $ref: '#/components/schemas/ActionStepMatchingEnum'
          - $ref: '#/components/schemas/NullEnum'
        href:
          type:
          - string
          - 'null'
          description: Link href attribute to match.
        href_matching:
          description: 'How to match the href value. Defaults to exact.


            * `contains` - contains

            * `regex` - regex

            * `exact` - exact'
          oneOf:
          - $ref: '#/components/schemas/ActionStepMatchingEnum'
          - $ref: '#/components/schemas/NullEnum'
        url:
          type:
          - string
          - 'null'
          description: Page URL to match.
        url_matching:
          description: 'How to match the URL value. Defaults to contains.


            * `contains` - contains

            * `regex` - regex

            * `exact` - exact'
          oneOf:
          - $ref: '#/components/schemas/ActionStepMatchingEnum'
          - $ref: '#/components/schemas/NullEnum'
      required:
      - selector_regex
    BulkUpdateTagsResponse:
      type: object
      properties:
        updated:
          type: array
          items:
            $ref: '#/components/schemas/BulkUpdateTagsItem'
        skipped:
          type: array
          items:
            $ref: '#/components/schemas/BulkUpdateTagsError'
      required:
      - skipped
      - updated
    BulkUpdateTagsError:
      type: object
      properties:
        id:
          type: integer
        reason:
          type: string
      required:
      - id
      - reason
    DateOperatorEnum:
      enum:
      - is_date_exact
      - is_date_before
      - is_date_after
      type: string
      description: '* `is_date_exact` - is_date_exact

        * `is_date_before` - is_date_before

        * `is_date_after` - is_date_after'
    ExistencePropertyFilter:
      type: object
      description: Checks whether a property is set or not, without comparing values.
      properties:
        key:
          type: string
          description: Key of the property you're filtering on. For example `email` or `$current_url`.
        type:
          allOf:
          - $ref: '#/components/schemas/PropertyFilterTypeEnum'
          default: event
          description: 'Property type (event, person, session, etc.).


            * `event` - event

            * `event_metadata` - event_metadata

            * `feature` - feature

            * `person` - person

            * `cohort` - cohort

            * `element` - element

            * `static-cohort` - static-cohort

            * `dynamic-cohort` - dynamic-cohort

            * `precalculated-cohort` - precalculated-cohort

            * `group` - group

            * `recording` - recording

            * `log_entry` - log_entry

            * `behavioral` - behavioral

            * `session` - session

            * `hogql` - hogql

            * `data_warehouse` - data_warehouse

            * `data_warehouse_person_property` - data_warehouse_person_property

            * `error_tracking_issue` - error_tracking_issue

            * `log` - log

            * `log_attribute` - log_attribute

            * `log_resource_attribute` - log_resource_attribute

            * `span` - span

            * `span_attribute` - span_attribute

            * `span_resource_attribute` - span_resource_attribute

            * `revenue_analytics` - revenue_analytics

            * `flag` - flag

            * `workflow_variable` - workflow_variable'
        operator:
          allOf:
          - $ref: '#/components/schemas/ExistenceOperatorEnum'
          description: 'Existence check operator.


            * `is_set` - is_set

            * `is_not_set` - is_not_set'
      required:
      - key
      - operator
    ActionEnum:
      enum:
      - add
      - remove
      - set
      type: string
      description: '* `add` - add

        * `remove` - remove

        * `set` - set'
    NumericPropertyFilterOperatorEnum:
      enum:
      - exact
      - is_not
      - gt
      - lt
      - gte
      - lte
      type: string
      description: '* `exact` - exact

        * `is_not` - is_not

        * `gt` - gt

        * `lt` - lt

        * `gte` - gte

        * `lte` - lte'
    BulkUpdateTagsRequest:
      type: object
      properties:
        ids:
          type: array
          items:
            type: integer
          description: List of object IDs to update tags on.
          maxItems: 500
        action:
          allOf:
          - $ref: '#/components/schemas/ActionEnum'
          description: '''add'' merges with existing tags, ''remove'' deletes specific tags, ''set'' replaces all tags.


            * `add` - add

            * `remove` - remove

            * `set` - set'
        tags:
          type: array
          items:
            type: string
          description: Tag names to add, remove, or set.
      required:
      - action
      - ids
      - tags
    DatePropertyFilter:
      type: object
      description: Matches date/datetime values with date-specific operators.
      properties:
        key:
          type: string
          description: Key of the property you're filtering on. For example `email` or `$current_url`.
        type:
          allOf:
          - $ref: '#/components/schemas/PropertyFilterTypeEnum'
          default: event
          description: 'Property type (event, person, session, etc.).


            * `event` - event

            * `event_metadata` - event_metadata

            * `feature` - feature

            * `person` - person

            * `cohort` - cohort

            * `element` - element

            * `static-cohort` - static-cohort

            * `dynamic-cohort` - dynamic-cohort

            * `precalculated-cohort` - precalculated-cohort

            * `group` - group

            * `recording` - recording

            * `log_entry` - log_entry

            * `behavioral` - behavioral

            * `session` - session

            * `hogql` - hogql

            * `data_warehouse` - data_warehouse

            * `data_warehouse_person_property` - data_warehouse_person_property

            * `error_tracking_issue` - error_tracking_issue

            * `log` - log

            * `log_attribute` - log_attribute

            * `log_resource_attribute` - log_resource_attribute

            * `span` - span

            * `span_attribute` - span_attribute

            * `span_resource_attribute` - span_resource_attribute

            * `revenue_analytics` - revenue_analytics

            * `flag` - flag

            * `workflow_variable` - workflow_variable'
        value:
          type: string
          description: Date or datetime string in ISO 8601 format (e.g. '2024-01-15' or '2024-01-15T10:30:00Z').
        operator:
          allOf:
          - $ref: '#/components/schemas/DateOperatorEnum'
          default: is_date_exact
          description: 'Date comparison operator.


            * `is_date_exact` - is_date_exact

            * `is_date_before` - is_date_before

            * `is_date_after` - is_date_after'
      required:
      - key
      - value
    ArrayPropertyFilter:
      type: object
      description: Matches against a list of values (OR semantics for exact/is_not, set membership for in/not_in).
      properties:
        key:
          type: string
          description: Key of the property you're filtering on. For example `email` or `$current_url`.
        type:
          allOf:
          - $ref: '#/components/schemas/PropertyFilterTypeEnum'
          default: event
          description: 'Property type (event, person, session, etc.).


            * `event` - event

            * `event_metadata` - event_metadata

            * `feature` - feature

            * `person` - person

            * `cohort` - cohort

            * `element` - element

            * `static-cohort` - static-cohort

            * `dynamic-cohort` - dynamic-cohort

            * `precalculated-cohort` - precalculated-cohort

            * `group` - group

            * `recording` - recording

            * `log_entry` - log_entry

            * `behavioral` - behavioral

            * `session` - session

            * `hogql` - hogql

            * `data_warehouse` - data_warehouse

            * `data_warehouse_person_property` - data_warehouse_person_property

            * `error_tracking_issue` - error_tracking_issue

            * `log` - log

            * `log_attribute` - log_attribute

            * `log_resource_attribute` - log_resource_attribute

            * `span` - span

            * `span_attribute` - span_attribute

            * `span_resource_attribute` - span_resource_attribute

            * `revenue_analytics` - revenue_analytics

            * `flag` - flag

            * `workflow_variable` - workflow_variable'
        value:
          type: array
          items:
            type: string
          description: List of values to match. For example `["test@example.com", "ok@example.com"]`.
        operator:
          allOf:
          - $ref: '#/components/schemas/ArrayPropertyFilterOperatorEnum'
          default: exact
          description: 'Array comparison operator.


            * `exact` - exact

            * `is_not` - is_not

            * `in` - in

            * `not_in` - not_in'
      required:
      - key
      - value
    Action:
      type: object
      description: Serializer mixin that handles tags for objects.
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type:
          - string
          - 'null'
          description: Name of the action (must be unique within the project).
          maxLength: 400
        description:
          type: string
          description: Human-readable description of what this action represents.
        tags:
          type: array
          items: {}
        post_to_slack:
          type: boolean
          description: Whether to post a notification to Slack when this action is triggered.
        slack_message_format:
          type: string
          description: Custom Slack message format. Supports templates with event properties.
          maxLength: 1200
        steps:
          type: array
          items:
            $ref: '#/components/schemas/ActionStepJSON'
          description: Action steps defining trigger conditions. Each step matches events by name, properties, URL, or element attributes. Multiple steps are OR-ed together.
        created_at:
          type: string
          format: date-time
          readOnly: true
        created_by:
          allOf:
          - $ref: '#/components/schemas/UserBasic'
          readOnly: true
        deleted:
          type: boolean
        is_calculating:
          type: boolean
          readOnly: true
        last_calculated_at:
          type: string
          format: date-time
        team_id:
          type: integer
          readOnly: true
        is_action:
          type: boolean
          readOnly: true
          default: true
        bytecode_error:
          type:
          - string
          - 'null'
          readOnly: true
        pinned_at:
          type:
          - string
          - 'null'
          format: date-time
          description: ISO 8601 timestamp when the action was pinned, or null if not pinned. Set any value to pin, null to unpin.
        creation_context:
          type:
          - string
          - 'null'
          readOnly: true
        _create_in_folder:
          type: string
          writeOnly: true
          title: ' create in folder'
        user_access_level:
          type:
          - string
          - 'null'
          readOnly: true
          description: The effective access level the user has for this object
      required:
      - bytecode_error
      - created_at
      - created_by
      - creation_context
      - id
      - is_action
      - is_calculating
      - team_id
      - user_access_level
    ExistenceOperatorEnum:
      enum:
      - is_set
      - is_not_set
      type: string
      description: '* `is_set` - is_set

        * `is_not_set` - is_not_set'
    ActionStepPropertyFilter:
      oneOf:
      - $ref: '#/components/schemas/StringPropertyFilter'
      - $ref: '#/components/schemas/NumericPropertyFilter'
      - $ref: '#/components/schemas/ArrayPropertyFilter'
      - $ref: '#/components/schemas/DatePropertyFilter'
      - $ref: '#/components/schemas/ExistencePropertyFilter'
    StringMatchOperatorEnum:
      enum:
      - exact
      - is_not
      - icontains
      - not_icontains
      - regex
      - not_regex
      type: string
      description: '* `exact` - exact

        * `is_not` - is_not

        * `icontains` - icontains

        * `not_icontains` - not_icontains

        * `regex` - regex

        * `not_regex` - not_regex'
    BulkUpdateTagsItem:
      type: object
      properties:
        id:
          type: integer
        tags:
          type: array
          items:
            type: string
      required:
      - id
      - tags
    UserBasic:
      type: object
      properties:
        id:
          type: integer
          readOnly: true
        uuid:
          type: string
          format: uuid
          readOnly: true
        distinct_id:
          type:
          - string
          - 'null'
          maxLength: 200
        first_name:
          type: string
          maxLength: 150
        last_name:
          type: string
          maxLength: 150
        email:
          type: string
          format: email
          title: Email address
          maxLength: 254
        is_email_verified:
          type:
          - boolean
          - 'null'
        hedgehog_config:
          type:
          - object
          - 'null'
          additionalProperties: true
          readOnly: true
        role_at_organization:
          oneOf:
          - $ref: '#/components/schemas/RoleAtOrganizationEnum'
          - $ref: '#/components/schemas/BlankEnum'
          - $ref: '#/components/schemas/NullEnum'
      required:
      - email
      - hedgehog_config
      - id
      - uuid
    PropertyFilterTypeEnum:
      enum:
      - event
      - event_metadata
      - feature
      - person
      - cohort
      - element
      - static-cohort
      - dynamic-cohort
      - precalculated-cohort
      - group
      - recording
      - log_entry
      - behavioral
      - session
      - hogql
      - data_warehouse
      - data_warehouse_person_property
      - error_tracking_issue
      - log
      - log_attribute
      - log_resource_attribute
      - span
      - span_attribute
      - span_resource_attribute
      - revenue_analytics
      - flag
      - workflow_variable
      type: string
      description: '* `event` - event

        * `event_metadata` - event_metadata

        * `feature` - feature

        * `person` - person

        * `cohort` - cohort

        * `element` - element

        * `static-cohort` - static-cohort

        * `dynamic-cohort` - dynamic-cohort

        * `precalculated-cohort` - precalculated-cohort

        * `group` - group

        * `recording` - recording

        * `log_entry` - log_entry

        * `behavioral` - behavioral

        * `session` - session

        * `hogql` - hogql

        * `data_warehouse` - data_warehouse

        * `data_warehouse_person_property` - data_warehouse_person_property

        * `error_tracking_issue` - error_tracking_issue

        * `log` - log

        * `log_attribute` - log_attribute

        * `log_resource_attribute` - log_resource_attribute

        * `span` - span

        * `span_attribute` - span_attribute

        * `span_resource_attribute` - span_resource_attribute

        * `revenue_analytics` - revenue_analytics

        * `flag` - flag

        * `workflow_variable` - workflow_variable'
    BlankEnum:
      enum:
      - ''
    RoleAtOrganizationEnum:
      enum:
      - engineering
      - data
      - product
      - founder
      - leadership
      - marketing
      - sales
      - other
      type: string
      description: '* `engineering` - Engineering

        * `data` - Data

        * `product` - Product Management

        * `founder` - Founder

        * `leadership` - Leadership

        * `marketing` - Marketing

        * `sales` - Sales / Success

        * `other` - Other'
    PatchedAction:
      type: object
      description: Serializer mixin that handles tags for objects.
      properties:
        id:
          type: integer
          readOnly: true
        name:
          type:
          - string
          - 'null'
          description: Name of the action (must be unique within the project).
          maxLength: 400
        description:
          type: string
          description: Human-readable description of what this action represents.
        tags:
          type: array
          items: {}
        post_to_slack:
          type: boolean
          description: Whether to post a notification to Slack when this action is triggered.
        slack_message_format:
          type: string
          description: Custom Slack message format. Supports templates with event properties.
          maxLength: 1200
        steps:
          type: array
          items:
            $ref: '#/components/schemas/ActionStepJSON'
          description: Action steps defining trigger conditions. Each step matches events by name, properties, URL, or element attributes. Multiple steps are OR-ed together.
        created_at:
          type: string
          format: date-time
          readOnly: true
        created_by:
          allOf:
          - $ref: '#/components/schemas/UserBasic'
          readOnly: true
        deleted:
          type: boolean
        is_calculating:
          type: boolean
          readOnly: true
        last_calculated_at:
          type: string
          format: date-time
        team_id:
          type: integer
          readOnly: true
        is_action:
          type: boolean
          readOnly: true
          default: true
        bytecode_error:
          type:
          - string
          - 'null'
          readOnly: true
        pinned_at:
          type:
          - string
          - 'null'
          format: date-time
          description: ISO 8601 timestamp when the action was pinned, or null if not pinned. Set any value to pin, null to unpin.
        creation_context:
          type:
          - string
          - 'null'
          readOnly: true
        _create_in_folder:
          type: string
          writeOnly: true
          title: ' create in folder'
        user_access_level:
          type:
          - string
          - 'null'
          readOnly: true
          description: The effective access level the user has for this object
    ArrayPropertyFilterOperatorEnum:
      enum:
      - exact
      - is_not
      - in
      - not_in
      type: string
      description: '* `exact` - exact

        * `is_not` - is_not

        * `in` - in

        * `not_in` - not_in'
    PaginatedActionList:
      type: object
      required:
      - count
      - results
      properties:
        count:
          type: integer
          example: 123
        next:
          type:
          - string


# --- truncated at 32 KB (37 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/posthog/refs/heads/main/openapi/posthog-actions-api-openapi.yml