All integrations

PostHog

DATA · DATA & ANALYTICS

Insights, dashboards, events, feature flags and cohorts in their own project.

Acts as the person, not as itself

Each user connects their own account. Every call carries both identities — the agent and the person it is acting for — so the agent can never reach past what that individual can already do.

Credentials never touch the agent

Tokens live in the vault and attach server-side at call time. The agent holds a session, not a secret, and revoking access does not mean rotating a key.

Every call on the record

Who asked, which agent acted, which action ran, and the verdict that let it through — one audit trail across every integration, not one per vendor.

What an agent can do

Each action is granted on its own. An agent allowed to read is not thereby allowed to write, and the scope beside each row is what the acting user must have connected for it to run at all.

posthog_delete_api_organizations_by_idWRITE

Delete organization via DELETE /api/organizations/{id}/

organization:write
posthog_delete_api_organizations_by_organization_id_domains_by_idWRITE

Delete organization domain via DELETE /api/organizations/{organization_id}/domains/{id}/

organization:write
posthog_delete_api_organizations_by_organization_id_invites_by_idWRITE

Delete organization invite via DELETE /api/organizations/{organization_id}/invites/{id}/

organization_member:write
posthog_delete_api_organizations_by_organization_id_members_by_user_uuidWRITE

Delete organization member via DELETE /api/organizations/{organization_id}/members/{user__uuid}/

organization_member:write
posthog_delete_api_organizations_by_organization_id_projects_by_idWRITE

Delete project via DELETE /api/organizations/{organization_id}/projects/{id}/ Projects for the current organization.

project:write
posthog_delete_api_organizations_by_organization_id_roles_by_idWRITE

Delete role via DELETE /api/organizations/{organization_id}/roles/{id}/ Role endpoints disclose member records, so they scope them the same way the members list does when the org restricts member list visibility.

organization:write
posthog_delete_api_organizations_by_organization_id_roles_by_role_id_role_memberships_by_idWRITE

Delete role membership via DELETE /api/organizations/{organization_id}/roles/{role_id}/role_memberships/{id}/ Role endpoints disclose member records, so they scope them the same way the members list does when the org restricts member list visibility.

organization:write
posthog_delete_api_projects_by_project_id_actions_by_idWRITE

Delete action via DELETE /api/projects/{project_id}/actions/{id}/ Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

action:write
posthog_delete_api_projects_by_project_id_alerts_by_idWRITE

Delete alert via DELETE /api/projects/{project_id}/alerts/{id}/

alert:write
posthog_delete_api_projects_by_project_id_annotations_by_idWRITE

Delete annotation via DELETE /api/projects/{project_id}/annotations/{id}/ Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

annotation:write
posthog_delete_api_projects_by_project_id_cohorts_by_idWRITE

Delete cohort via DELETE /api/projects/{project_id}/cohorts/{id}/ Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

cohort:write
posthog_delete_api_projects_by_project_id_comments_by_idWRITE

Delete comment via DELETE /api/projects/{project_id}/comments/{id}/ Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

comment:write
posthog_delete_api_projects_by_project_id_dashboard_templates_by_idWRITE

Delete dashboard template via DELETE /api/projects/{project_id}/dashboard_templates/{id}/ Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

dashboard_template:write
posthog_delete_api_projects_by_project_id_dashboards_by_dashboard_id_collaborators_by_user_uuidWRITE

Delete dashboard collaborator via DELETE /api/projects/{project_id}/dashboards/{dashboard_id}/collaborators/{user__uuid}/

dashboard:write
posthog_delete_api_projects_by_project_id_dashboards_by_dashboard_id_sharing_passwords_by_password_idWRITE

Delete dashboard sharing password via DELETE /api/projects/{project_id}/dashboards/{dashboard_id}/sharing/passwords/{password_id}/ Delete a password from the sharing configuration.

sharing_configuration:write
posthog_delete_api_projects_by_project_id_dashboards_by_idWRITE

Delete dashboard via DELETE /api/projects/{project_id}/dashboards/{id}/ Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

dashboard:write
posthog_delete_api_projects_by_project_id_early_access_feature_by_idWRITE

Delete early access feature via DELETE /api/projects/{project_id}/early_access_feature/{id}/

early_access_feature:write
posthog_delete_api_projects_by_project_id_event_definitions_by_idWRITE

Delete event definition via DELETE /api/projects/{project_id}/event_definitions/{id}/

event_definition:write
posthog_delete_api_projects_by_project_id_experiment_holdouts_by_idWRITE

Delete experiment holdout via DELETE /api/projects/{project_id}/experiment_holdouts/{id}/

experiment_holdout:write
posthog_delete_api_projects_by_project_id_experiment_saved_metrics_by_idWRITE

Delete experiment saved metric via DELETE /api/projects/{project_id}/experiment_saved_metrics/{id}/

experiment_saved_metric:write
posthog_delete_api_projects_by_project_id_experiments_by_idWRITE

Delete experiment via DELETE /api/projects/{project_id}/experiments/{id}/ Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

experiment:write
posthog_delete_api_projects_by_project_id_feature_flags_by_idWRITE

Delete feature flag via DELETE /api/projects/{project_id}/feature_flags/{id}/ Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

feature_flag:write
posthog_delete_api_projects_by_project_id_groups_types_by_group_type_indexWRITE

Delete group type via DELETE /api/projects/{project_id}/groups_types/{group_type_index}/

group:write
posthog_delete_api_projects_by_project_id_groups_types_by_group_type_index_metrics_by_idWRITE

Delete group type metric via DELETE /api/projects/{project_id}/groups_types/{group_type_index}/metrics/{id}/

usage_metric:write
posthog_delete_api_projects_by_project_id_insight_variables_by_idWRITE

Delete insight variable via DELETE /api/projects/{project_id}/insight_variables/{id}/

insight_variable:write
posthog_delete_api_projects_by_project_id_insights_by_idWRITE

Delete insight via DELETE /api/projects/{project_id}/insights/{id}/ Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

insight:write
posthog_delete_api_projects_by_project_id_insights_by_insight_id_sharing_passwords_by_password_idWRITE

Delete insight sharing password via DELETE /api/projects/{project_id}/insights/{insight_id}/sharing/passwords/{password_id}/ Delete a password from the sharing configuration.

sharing_configuration:write
posthog_delete_api_projects_by_project_id_property_definitions_by_idWRITE

Delete property definition via DELETE /api/projects/{project_id}/property_definitions/{id}/

property_definition:write
posthog_delete_api_projects_by_project_id_query_by_idWRITE

Delete query via DELETE /api/projects/{project_id}/query/{id}/ (Experimental)

query:read
posthog_delete_api_projects_by_project_id_session_recording_playlists_by_short_id_recordings_by_session_recording_idWRITE

Delete session recording playlist recording via DELETE /api/projects/{project_id}/session_recording_playlists/{short_id}/recordings/{session_recording_id}/

session_recording_playlist:write
posthog_delete_api_projects_by_project_id_session_recordings_by_idWRITE

Delete session recording via DELETE /api/projects/{project_id}/session_recordings/{id}/

session_recording:write
posthog_delete_api_projects_by_project_id_session_recordings_by_recording_id_sharing_passwords_by_password_idWRITE

Delete session recording sharing password via DELETE /api/projects/{project_id}/session_recordings/{recording_id}/sharing/passwords/{password_id}/ Delete a password from the sharing configuration.

sharing_configuration:write
posthog_delete_api_projects_by_project_id_subscriptions_by_idWRITE

Delete subscription via DELETE /api/projects/{project_id}/subscriptions/{id}/ Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

subscription:write
posthog_delete_api_projects_by_project_id_surveys_by_idWRITE

Delete survey via DELETE /api/projects/{project_id}/surveys/{id}/

survey:write
posthog_get_api_organizationsREAD

List organizations via GET /api/organizations/

organization:read
posthog_get_api_organizations_by_idREAD

Get organization via GET /api/organizations/{id}/

organization:read
posthog_get_api_organizations_by_organization_id_domainsREAD

List organization domains via GET /api/organizations/{organization_id}/domains/

organization:read
posthog_get_api_organizations_by_organization_id_domains_by_idREAD

Get organization domain via GET /api/organizations/{organization_id}/domains/{id}/

organization:read
posthog_get_api_organizations_by_organization_id_invitesREAD

List organization invites via GET /api/organizations/{organization_id}/invites/

organization_member:read
posthog_get_api_organizations_by_organization_id_membersREAD

List organization members via GET /api/organizations/{organization_id}/members/

organization_member:read
posthog_get_api_organizations_by_organization_id_projectsREAD

List projects via GET /api/organizations/{organization_id}/projects/ Projects for the current organization.

project:read
posthog_get_api_organizations_by_organization_id_projects_by_idREAD

Get project via GET /api/organizations/{organization_id}/projects/{id}/ Retrieve a project and its settings.

project:read
posthog_get_api_organizations_by_organization_id_projects_by_id_event_ingestion_restrictionsREAD

Get project event ingestion restrictions via GET /api/organizations/{organization_id}/projects/{id}/event_ingestion_restrictions/ Projects for the current organization.

project:read
posthog_get_api_organizations_by_organization_id_rolesREAD

List roles via GET /api/organizations/{organization_id}/roles/ Role endpoints disclose member records, so they scope them the same way the members list does when the org restricts member list visibility.

organization:read
posthog_get_api_organizations_by_organization_id_roles_by_idREAD

Get role via GET /api/organizations/{organization_id}/roles/{id}/ Role endpoints disclose member records, so they scope them the same way the members list does when the org restricts member list visibility.

organization:read
posthog_get_api_organizations_by_organization_id_roles_by_role_id_role_membershipsREAD

Get role memberships via GET /api/organizations/{organization_id}/roles/{role_id}/role_memberships/ Role endpoints disclose member records, so they scope them the same way the members list does when the org restricts member list visibility.

organization:read
posthog_get_api_organizations_by_organization_id_roles_by_role_id_role_memberships_by_idREAD

Get role membership via GET /api/organizations/{organization_id}/roles/{role_id}/role_memberships/{id}/ Role endpoints disclose member records, so they scope them the same way the members list does when the org restricts member list visibility.

organization:read
posthog_get_api_projects_by_project_id_actionsREAD

List actions via GET /api/projects/{project_id}/actions/

action:read
posthog_get_api_projects_by_project_id_actions_by_idREAD

Get action via GET /api/projects/{project_id}/actions/{id}/

action:read
posthog_get_api_projects_by_project_id_actions_by_id_referencesREAD

Get action references via GET /api/projects/{project_id}/actions/{id}/references/

action:read
posthog_get_api_projects_by_project_id_activity_logREAD

List activity log via GET /api/projects/{project_id}/activity_log/

activity_log:read
posthog_get_api_projects_by_project_id_alertsREAD

List alerts via GET /api/projects/{project_id}/alerts/

alert:read
posthog_get_api_projects_by_project_id_alerts_by_idREAD

Get alert via GET /api/projects/{project_id}/alerts/{id}/

alert:read
posthog_get_api_projects_by_project_id_annotationsREAD

List annotations via GET /api/projects/{project_id}/annotations/ Create, Read, Update and Delete annotations. [See docs](https://posthog.com/docs/data/annotations) for more information on annotations.

annotation:read
posthog_get_api_projects_by_project_id_annotations_by_idREAD

Get annotation via GET /api/projects/{project_id}/annotations/{id}/ Create, Read, Update and Delete annotations. [See docs](https://posthog.com/docs/data/annotations) for more information on annotations.

annotation:read
posthog_get_api_projects_by_project_id_cohortsREAD

List cohorts via GET /api/projects/{project_id}/cohorts/

cohort:read
posthog_get_api_projects_by_project_id_cohorts_activityREAD

Get cohorts activity via GET /api/projects/{project_id}/cohorts/activity/

activity_log:read
posthog_get_api_projects_by_project_id_cohorts_by_idREAD

Get cohort via GET /api/projects/{project_id}/cohorts/{id}/

cohort:read
posthog_get_api_projects_by_project_id_cohorts_by_id_activityREAD

Get cohort activity via GET /api/projects/{project_id}/cohorts/{id}/activity/

activity_log:read
posthog_get_api_projects_by_project_id_cohorts_by_id_calculation_historyREAD

Get cohort calculation history via GET /api/projects/{project_id}/cohorts/{id}/calculation_history/

cohort:read
posthog_get_api_projects_by_project_id_cohorts_by_id_personsREAD

Get cohort persons via GET /api/projects/{project_id}/cohorts/{id}/persons/

cohort:readperson:read
posthog_get_api_projects_by_project_id_cohorts_by_id_used_inREAD

Get cohort used in via GET /api/projects/{project_id}/cohorts/{id}/used_in/

cohort:read
posthog_get_api_projects_by_project_id_commentsREAD

List comments via GET /api/projects/{project_id}/comments/

comment:read
posthog_get_api_projects_by_project_id_comments_by_idREAD

Get comment via GET /api/projects/{project_id}/comments/{id}/

comment:read
posthog_get_api_projects_by_project_id_comments_by_id_threadREAD

Get comment thread via GET /api/projects/{project_id}/comments/{id}/thread/

comment:read
posthog_get_api_projects_by_project_id_comments_countREAD

Get comments count via GET /api/projects/{project_id}/comments/count/

comment:read
posthog_get_api_projects_by_project_id_dashboard_templatesREAD

List dashboard templates via GET /api/projects/{project_id}/dashboard_templates/

dashboard_template:read
posthog_get_api_projects_by_project_id_dashboard_templates_by_idREAD

Get dashboard template via GET /api/projects/{project_id}/dashboard_templates/{id}/

dashboard_template:read
posthog_get_api_projects_by_project_id_dashboardsREAD

List dashboards via GET /api/projects/{project_id}/dashboards/

dashboard:read
posthog_get_api_projects_by_project_id_dashboards_by_dashboard_id_collaboratorsREAD

Get dashboard collaborators via GET /api/projects/{project_id}/dashboards/{dashboard_id}/collaborators/

dashboard:read
posthog_get_api_projects_by_project_id_dashboards_by_dashboard_id_sharingREAD

Get dashboard sharing via GET /api/projects/{project_id}/dashboards/{dashboard_id}/sharing/

sharing_configuration:read
posthog_get_api_projects_by_project_id_dashboards_by_idREAD

Get dashboard via GET /api/projects/{project_id}/dashboards/{id}/

dashboard:read
posthog_get_api_projects_by_project_id_early_access_featureREAD

List early access features via GET /api/projects/{project_id}/early_access_feature/

early_access_feature:read
posthog_get_api_projects_by_project_id_early_access_feature_by_idREAD

Get early access feature via GET /api/projects/{project_id}/early_access_feature/{id}/

early_access_feature:read
posthog_get_api_projects_by_project_id_elementsREAD

List elements via GET /api/projects/{project_id}/elements/

element:read
posthog_get_api_projects_by_project_id_elements_statsREAD

Get elements stats via GET /api/projects/{project_id}/elements/stats/ Counts of $autocapture, $rageclick, and $dead_click events grouped by the element chain they occurred on, ordered by count. Defaults to all three event types; narrow with the include parameter.

element:read
posthog_get_api_projects_by_project_id_elements_valuesREAD

Get elements values via GET /api/projects/{project_id}/elements/values/

element:read
posthog_get_api_projects_by_project_id_event_definitionsREAD

List event definitions via GET /api/projects/{project_id}/event_definitions/

event_definition:read
posthog_get_api_projects_by_project_id_event_definitions_by_idREAD

Get event definition via GET /api/projects/{project_id}/event_definitions/{id}/

event_definition:read
posthog_get_api_projects_by_project_id_event_definitions_by_nameREAD

Get event definitions by name via GET /api/projects/{project_id}/event_definitions/by_name/ Get event definition by exact name

event_definition:read
posthog_get_api_projects_by_project_id_event_definitions_primary_propertiesREAD

Get event definitions primary properties via GET /api/projects/{project_id}/event_definitions/primary_properties/ Resolve team-configured primary properties for event definitions. The response only contains entries where a non-null primary_property is set on the EventDefinition. Callers should fall back to the core taxonomy defaults client-side for...

event_definition:read
posthog_get_api_projects_by_project_id_eventsREAD

List events via GET /api/projects/{project_id}/events/ This endpoint allows you to list and filter events. It is effectively deprecated and is kept only for backwards compatibility. If you ever ask about it you will be advised to not use it... If you want to ad-hoc list or aggregate events...

query:read
posthog_get_api_projects_by_project_id_events_by_idREAD

Get event via GET /api/projects/{project_id}/events/{id}/

query:read
posthog_get_api_projects_by_project_id_events_valuesREAD

Get events values via GET /api/projects/{project_id}/events/values/

query:read
posthog_get_api_projects_by_project_id_experiment_holdoutsREAD

List experiment holdouts via GET /api/projects/{project_id}/experiment_holdouts/

experiment_holdout:read
posthog_get_api_projects_by_project_id_experiment_holdouts_by_idREAD

Get experiment holdout via GET /api/projects/{project_id}/experiment_holdouts/{id}/

experiment_holdout:read
posthog_get_api_projects_by_project_id_experiment_saved_metricsREAD

List experiment saved metrics via GET /api/projects/{project_id}/experiment_saved_metrics/

experiment_saved_metric:read
posthog_get_api_projects_by_project_id_experiment_saved_metrics_by_idREAD

Get experiment saved metric via GET /api/projects/{project_id}/experiment_saved_metrics/{id}/

experiment_saved_metric:read
posthog_get_api_projects_by_project_id_experimentsREAD

List experiments via GET /api/projects/{project_id}/experiments/ List experiments for the current project. Supports filtering by status and archival state.

experiment:read
posthog_get_api_projects_by_project_id_experiments_by_idREAD

Get experiment via GET /api/projects/{project_id}/experiments/{id}/ Retrieve a single experiment by ID, including its current status, metrics, feature flag, and results metadata.

experiment:read
posthog_get_api_projects_by_project_id_experiments_by_id_activityREAD

Get experiment activity via GET /api/projects/{project_id}/experiments/{id}/activity/ Change history for this experiment. Returns a paginated audit trail of changes to the experiment, its holdouts and shared metrics, and its linked feature flag: who made each change, what changed (field-level before/after values), and when....

activity_log:read
posthog_get_api_projects_by_project_id_exportsREAD

List exports via GET /api/projects/{project_id}/exports/

export:read
posthog_get_api_projects_by_project_id_exports_by_idREAD

Get export via GET /api/projects/{project_id}/exports/{id}/

export:read
posthog_get_api_projects_by_project_id_feature_flagsREAD

List feature flags via GET /api/projects/{project_id}/feature_flags/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

feature_flag:read
posthog_get_api_projects_by_project_id_feature_flags_activityREAD

Get feature flags activity via GET /api/projects/{project_id}/feature_flags/activity/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

activity_log:read
posthog_get_api_projects_by_project_id_feature_flags_by_idREAD

Get feature flag via GET /api/projects/{project_id}/feature_flags/{id}/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

feature_flag:read
posthog_get_api_projects_by_project_id_feature_flags_by_id_activityREAD

Get feature flag activity via GET /api/projects/{project_id}/feature_flags/{id}/activity/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

activity_log:read
posthog_get_api_projects_by_project_id_feature_flags_by_id_dependent_flagsREAD

Get feature flag dependent flags via GET /api/projects/{project_id}/feature_flags/{id}/dependent_flags/ Get other active flags that depend on this flag.

feature_flag:read
posthog_get_api_projects_by_project_id_feature_flags_by_id_remote_configREAD

Get feature flag remote config via GET /api/projects/{project_id}/feature_flags/{id}/remote_config/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

feature_flag:read
posthog_get_api_projects_by_project_id_feature_flags_by_id_statusREAD

Get feature flag status via GET /api/projects/{project_id}/feature_flags/{id}/status/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

feature_flag:read
posthog_get_api_projects_by_project_id_feature_flags_by_id_versions_by_version_numberREAD

Get feature flag version via GET /api/projects/{project_id}/feature_flags/{id}/versions/{version_number}/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

feature_flag:read
posthog_get_api_projects_by_project_id_feature_flags_evaluation_reasonsREAD

Get feature flags evaluation reasons via GET /api/projects/{project_id}/feature_flags/evaluation_reasons/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

feature_flag:read
posthog_get_api_projects_by_project_id_feature_flags_my_flagsREAD

Get feature flags my flags via GET /api/projects/{project_id}/feature_flags/my_flags/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

feature_flag:read
posthog_get_api_projects_by_project_id_groupsREAD

List groups via GET /api/projects/{project_id}/groups/ List all groups of a specific group type. You must pass ?group_type_index= in the URL. To get a list of valid group types, call /api/:project_id/groups_types/. Uses forward-only keyset pagination via the `cursor` parameter. The `previous`...

group:read
posthog_get_api_projects_by_project_id_groups_activityREAD

Get groups activity via GET /api/projects/{project_id}/groups/activity/

activity_log:read
posthog_get_api_projects_by_project_id_groups_findREAD

Find groups via GET /api/projects/{project_id}/groups/find/

group:read
posthog_get_api_projects_by_project_id_groups_property_valuesREAD

Get groups property values via GET /api/projects/{project_id}/groups/property_values/

group:read
posthog_get_api_projects_by_project_id_groups_relatedREAD

Get groups related via GET /api/projects/{project_id}/groups/related/

group:read
posthog_get_api_projects_by_project_id_groups_typesREAD

List group types via GET /api/projects/{project_id}/groups_types/

group:read
posthog_get_api_projects_by_project_id_groups_types_by_group_type_index_metricsREAD

Get group type metrics via GET /api/projects/{project_id}/groups_types/{group_type_index}/metrics/

usage_metric:read
posthog_get_api_projects_by_project_id_groups_types_by_group_type_index_metrics_by_idREAD

Get group type metric via GET /api/projects/{project_id}/groups_types/{group_type_index}/metrics/{id}/

usage_metric:read
posthog_get_api_projects_by_project_id_heatmapsREAD

List heatmaps via GET /api/projects/{project_id}/heatmaps/ Aggregated heatmap interactions for a page. For type 'click'/'rageclick'/'mousemove' each result is a point with relative x, absolute client-y, and a count. For type 'scrolldepth' the response is scroll-depth buckets instead (cumulative...

heatmap:read
posthog_get_api_projects_by_project_id_heatmaps_eventsREAD

Get heatmaps events via GET /api/projects/{project_id}/heatmaps/events/ Drill into the individual session interactions behind one or more heatmap coordinates. Pass the 'points' you want to inspect (from the heatmaps list response) to get the underlying per-session events, so you can jump to the session...

heatmap:read
posthog_get_api_projects_by_project_id_insight_variablesREAD

List insight variables via GET /api/projects/{project_id}/insight_variables/

insight_variable:read
posthog_get_api_projects_by_project_id_insight_variables_by_idREAD

Get insight variable via GET /api/projects/{project_id}/insight_variables/{id}/

insight_variable:read
posthog_get_api_projects_by_project_id_insightsREAD

List insights via GET /api/projects/{project_id}/insights/ DRF ViewSet mixin that gates coalesced responses behind permission checks. The QueryCoalescingMiddleware attaches cached response data to request.META["_coalesced_response"] for followers. This mixin runs DRF's initial() (auth +...

insight:read
posthog_get_api_projects_by_project_id_insights_activityREAD

Get insights activity via GET /api/projects/{project_id}/insights/activity/ Project-wide audit trail across all insights — who created, edited, deleted, or restored insights, what changed (with before/after diffs), and when. Useful for surfacing what people (or agents) have been working on recently.

activity_log:read
posthog_get_api_projects_by_project_id_insights_by_idREAD

Get insight via GET /api/projects/{project_id}/insights/{id}/ DRF ViewSet mixin that gates coalesced responses behind permission checks. The QueryCoalescingMiddleware attaches cached response data to request.META["_coalesced_response"] for followers. This mixin runs DRF's initial() (auth +...

insight:read
posthog_get_api_projects_by_project_id_insights_by_id_activityREAD

Get insight activity via GET /api/projects/{project_id}/insights/{id}/activity/ Audit trail for a single insight — every change made to it, by whom, and when. Use this when you want the change history of a specific insight; use the project-wide activity endpoint for a broader view.

activity_log:read
posthog_get_api_projects_by_project_id_insights_by_insight_id_sharingREAD

Get insight sharing via GET /api/projects/{project_id}/insights/{insight_id}/sharing/

sharing_configuration:read
posthog_get_api_projects_by_project_id_insights_by_insight_id_thresholdsREAD

Get insight thresholds via GET /api/projects/{project_id}/insights/{insight_id}/thresholds/

alert:read
posthog_get_api_projects_by_project_id_insights_by_insight_id_thresholds_by_idREAD

Get insight threshold via GET /api/projects/{project_id}/insights/{insight_id}/thresholds/{id}/

alert:read
posthog_get_api_projects_by_project_id_personsREAD

List persons via GET /api/projects/{project_id}/persons/ This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the [capture API](https://posthog.com/docs/api/capture), the `$set` and `$unset`...

person:read
posthog_get_api_projects_by_project_id_persons_activityREAD

Get persons activity via GET /api/projects/{project_id}/persons/activity/ This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the [capture API](https://posthog.com/docs/api/capture), the `$set` and `$unset`...

activity_log:read
posthog_get_api_projects_by_project_id_persons_by_idREAD

Get person via GET /api/projects/{project_id}/persons/{id}/ This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the [capture API](https://posthog.com/docs/api/capture), the `$set` and `$unset`...

person:read
posthog_get_api_projects_by_project_id_persons_by_id_activityREAD

Get person activity via GET /api/projects/{project_id}/persons/{id}/activity/ This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the [capture API](https://posthog.com/docs/api/capture), the `$set` and `$unset`...

activity_log:read
posthog_get_api_projects_by_project_id_persons_cohortsREAD

Get persons cohorts via GET /api/projects/{project_id}/persons/cohorts/ This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the [capture API](https://posthog.com/docs/api/capture), the `$set` and `$unset`...

cohort:readperson:read
posthog_get_api_projects_by_project_id_persons_deletion_statusREAD

Get persons deletion status via GET /api/projects/{project_id}/persons/deletion_status/ List the status of queued event deletions for persons. When you delete a person with `delete_events=true`, an async deletion is queued. Use this endpoint to check whether those deletions are still pending or have been completed.

person:read
posthog_get_api_projects_by_project_id_persons_properties_at_timeREAD

Get persons properties at time via GET /api/projects/{project_id}/persons/properties_at_time/ Get person properties as they existed at a specific point in time. This endpoint reconstructs person properties by querying ClickHouse events for $set and $set_once operations up to the specified timestamp. Query parameters: - distinct_id...

person:read
posthog_get_api_projects_by_project_id_persons_valuesREAD

Get persons values via GET /api/projects/{project_id}/persons/values/ This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the [capture API](https://posthog.com/docs/api/capture), the `$set` and `$unset`...

person:read
posthog_get_api_projects_by_project_id_property_definitionsREAD

List property definitions via GET /api/projects/{project_id}/property_definitions/

property_definition:read
posthog_get_api_projects_by_project_id_property_definitions_by_idREAD

Get property definition via GET /api/projects/{project_id}/property_definitions/{id}/

property_definition:read
posthog_get_api_projects_by_project_id_property_definitions_seen_togetherREAD

Get property definitions seen together via GET /api/projects/{project_id}/property_definitions/seen_together/ Allows a caller to provide a list of event names and a single property name Returns a map of the event names to a boolean representing whether that property has ever been seen with that event_name

property_definition:read
posthog_get_api_projects_by_project_id_query_by_idREAD

Get query via GET /api/projects/{project_id}/query/{id}/ (Experimental)

query:read
posthog_get_api_projects_by_project_id_session_recording_playlistsREAD

List session recording playlists via GET /api/projects/{project_id}/session_recording_playlists/ Override list to include synthetic playlists. Synthetics have no DB row, so we compute each one's position in the merged sort and split the requested page between synthetics and a DB queryset slice. The merge/rank/sort is all in-memory, so...

session_recording_playlist:read
posthog_get_api_projects_by_project_id_session_recording_playlists_by_short_idREAD

Get session recording playlist via GET /api/projects/{project_id}/session_recording_playlists/{short_id}/

session_recording_playlist:read
posthog_get_api_projects_by_project_id_session_recording_playlists_by_short_id_recordingsREAD

Get session recording playlist recordings via GET /api/projects/{project_id}/session_recording_playlists/{short_id}/recordings/

session_recording_playlist:read
posthog_get_api_projects_by_project_id_session_recordingsREAD

List session recordings via GET /api/projects/{project_id}/session_recordings/

session_recording:read
posthog_get_api_projects_by_project_id_session_recordings_by_idREAD

Get session recording via GET /api/projects/{project_id}/session_recordings/{id}/

session_recording:read
posthog_get_api_projects_by_project_id_session_recordings_by_recording_id_sharingREAD

Get session recording sharing via GET /api/projects/{project_id}/session_recordings/{recording_id}/sharing/

sharing_configuration:read
posthog_get_api_projects_by_project_id_sessions_property_definitionsREAD

Get sessions property definitions via GET /api/projects/{project_id}/sessions/property_definitions/

query:read
posthog_get_api_projects_by_project_id_sessions_valuesREAD

Get sessions values via GET /api/projects/{project_id}/sessions/values/

query:read
posthog_get_api_projects_by_project_id_subscriptionsREAD

List subscriptions via GET /api/projects/{project_id}/subscriptions/

subscription:read
posthog_get_api_projects_by_project_id_subscriptions_by_idREAD

Get subscription via GET /api/projects/{project_id}/subscriptions/{id}/

subscription:read
posthog_get_api_projects_by_project_id_subscriptions_summary_quotaREAD

Get subscriptions summary quota via GET /api/projects/{project_id}/subscriptions/summary_quota/

subscription:read
posthog_get_api_projects_by_project_id_surveysREAD

List surveys via GET /api/projects/{project_id}/surveys/

survey:read
posthog_get_api_projects_by_project_id_surveys_activityREAD

Get surveys activity via GET /api/projects/{project_id}/surveys/activity/

activity_log:read
posthog_get_api_projects_by_project_id_surveys_by_idREAD

Get survey via GET /api/projects/{project_id}/surveys/{id}/

survey:read
posthog_get_api_projects_by_project_id_surveys_by_id_activityREAD

Get survey activity via GET /api/projects/{project_id}/surveys/{id}/activity/

activity_log:read
posthog_get_api_projects_by_project_id_surveys_by_id_responsesREAD

Get survey responses via GET /api/projects/{project_id}/surveys/{id}/responses/ List survey responses for a specific survey, with question text resolved server-side so callers do not have to map opaque `$survey_response_<id>` keys. Each row carries `distinct_id`, `session_id`, `submitted_at`, and an `extra` block...

query:readsurvey:read
posthog_get_api_projects_by_project_id_surveys_by_id_statsREAD

Get survey stats via GET /api/projects/{project_id}/surveys/{id}/stats/ Get survey response statistics for a specific survey. Args: date_from: Optional ISO timestamp for start date (e.g. 2024-01-01T00:00:00Z) date_to: Optional ISO timestamp for end date (e.g. 2024-01-31T23:59:59Z) exclude_archived: Optional...

survey:read
posthog_get_api_projects_by_project_id_surveys_responses_countREAD

Get surveys responses count via GET /api/projects/{project_id}/surveys/responses_count/ Get response counts for all surveys. Args: exclude_archived: Optional boolean to exclude archived responses (default: false, includes archived) survey_ids: Optional comma-separated list of survey IDs to filter by Returns: Dictionary...

survey:read
posthog_get_api_projects_by_project_id_surveys_statsREAD

Get surveys stats via GET /api/projects/{project_id}/surveys/stats/ Get aggregated response statistics across all surveys. Args: date_from: Optional ISO timestamp for start date (e.g. 2024-01-01T00:00:00Z) date_to: Optional ISO timestamp for end date (e.g. 2024-01-31T23:59:59Z) Returns: Aggregated...

survey:read
posthog_get_api_usersREAD

List users via GET /api/users/

user:read
posthog_get_api_users_by_uuidREAD

Get user via GET /api/users/{uuid}/ Retrieve a user's profile and settings. Pass `@me` as the UUID to fetch the authenticated user; non-staff callers may only access their own account.

user:read
posthog_patch_api_organizations_by_idWRITE

Update organization via PATCH /api/organizations/{id}/

organization:write
posthog_patch_api_organizations_by_organization_id_domains_by_idWRITE

Update organization domain via PATCH /api/organizations/{organization_id}/domains/{id}/

organization:write
posthog_patch_api_organizations_by_organization_id_members_by_user_uuidWRITE

Update organization member via PATCH /api/organizations/{organization_id}/members/{user__uuid}/

organization_member:write
posthog_patch_api_organizations_by_organization_id_projects_by_idWRITE

Update project via PATCH /api/organizations/{organization_id}/projects/{id}/ Update one or more of a project's settings. Only the fields included in the request body are changed.

project:write
posthog_patch_api_organizations_by_organization_id_projects_by_id_add_product_intentWRITE

Add product intent project via PATCH /api/organizations/{organization_id}/projects/{id}/add_product_intent/ Projects for the current organization.

project:read
posthog_patch_api_organizations_by_organization_id_projects_by_id_complete_product_onboardingWRITE

Complete product onboarding project via PATCH /api/organizations/{organization_id}/projects/{id}/complete_product_onboarding/ Projects for the current organization.

project:read
posthog_patch_api_organizations_by_organization_id_roles_by_idWRITE

Update role via PATCH /api/organizations/{organization_id}/roles/{id}/ Role endpoints disclose member records, so they scope them the same way the members list does when the org restricts member list visibility.

organization:write
posthog_patch_api_projects_by_project_id_actions_by_idWRITE

Update action via PATCH /api/projects/{project_id}/actions/{id}/

action:write
posthog_patch_api_projects_by_project_id_alerts_by_idWRITE

Update alert via PATCH /api/projects/{project_id}/alerts/{id}/

alert:write
posthog_patch_api_projects_by_project_id_annotations_by_idWRITE

Update annotation via PATCH /api/projects/{project_id}/annotations/{id}/ Create, Read, Update and Delete annotations. [See docs](https://posthog.com/docs/data/annotations) for more information on annotations.

annotation:write
posthog_patch_api_projects_by_project_id_cohorts_by_idWRITE

Update cohort via PATCH /api/projects/{project_id}/cohorts/{id}/

cohort:write
posthog_patch_api_projects_by_project_id_cohorts_by_id_add_persons_to_static_cohortWRITE

Add persons to static cohort via PATCH /api/projects/{project_id}/cohorts/{id}/add_persons_to_static_cohort/

cohort:write
posthog_patch_api_projects_by_project_id_cohorts_by_id_remove_person_from_static_cohortWRITE

Remove person from static cohort via PATCH /api/projects/{project_id}/cohorts/{id}/remove_person_from_static_cohort/

cohort:write
posthog_patch_api_projects_by_project_id_comments_by_idWRITE

Update comment via PATCH /api/projects/{project_id}/comments/{id}/

comment:write
posthog_patch_api_projects_by_project_id_dashboard_templates_by_idWRITE

Update dashboard template via PATCH /api/projects/{project_id}/dashboard_templates/{id}/

dashboard_template:write
posthog_patch_api_projects_by_project_id_dashboards_by_idWRITE

Update dashboard via PATCH /api/projects/{project_id}/dashboards/{id}/

dashboard:write
posthog_patch_api_projects_by_project_id_dashboards_by_id_move_tileWRITE

Move tile dashboard via PATCH /api/projects/{project_id}/dashboards/{id}/move_tile/

dashboard:write
posthog_patch_api_projects_by_project_id_early_access_feature_by_idWRITE

Update early access feature via PATCH /api/projects/{project_id}/early_access_feature/{id}/

early_access_feature:write
posthog_patch_api_projects_by_project_id_event_definitions_by_idWRITE

Update event definition via PATCH /api/projects/{project_id}/event_definitions/{id}/

event_definition:write
posthog_patch_api_projects_by_project_id_experiment_holdouts_by_idWRITE

Update experiment holdout via PATCH /api/projects/{project_id}/experiment_holdouts/{id}/

experiment_holdout:write
posthog_patch_api_projects_by_project_id_experiment_saved_metrics_by_idWRITE

Update experiment saved metric via PATCH /api/projects/{project_id}/experiment_saved_metrics/{id}/

experiment_saved_metric:write
posthog_patch_api_projects_by_project_id_experiments_by_idWRITE

Update experiment via PATCH /api/projects/{project_id}/experiments/{id}/ Update an experiment. Use this to modify experiment properties such as name, description, metrics, variants, and configuration. Metrics can be added, changed and removed at any time. Feature-flag config (variants, rollout, payloads) is...

experiment:write
posthog_patch_api_projects_by_project_id_feature_flags_by_idWRITE

Update feature flag via PATCH /api/projects/{project_id}/feature_flags/{id}/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

feature_flag:write
posthog_patch_api_projects_by_project_id_groups_types_by_group_type_index_metrics_by_idWRITE

Update group type metric via PATCH /api/projects/{project_id}/groups_types/{group_type_index}/metrics/{id}/

usage_metric:write
posthog_patch_api_projects_by_project_id_insight_variables_by_idWRITE

Update insight variable via PATCH /api/projects/{project_id}/insight_variables/{id}/

insight_variable:write
posthog_patch_api_projects_by_project_id_insights_by_idWRITE

Update insight via PATCH /api/projects/{project_id}/insights/{id}/ DRF ViewSet mixin that gates coalesced responses behind permission checks. The QueryCoalescingMiddleware attaches cached response data to request.META["_coalesced_response"] for followers. This mixin runs DRF's initial() (auth +...

insight:write
posthog_patch_api_projects_by_project_id_persons_by_idWRITE

Update person via PATCH /api/projects/{project_id}/persons/{id}/ This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the [capture API](https://posthog.com/docs/api/capture), the `$set` and `$unset`...

person:write
posthog_patch_api_projects_by_project_id_property_definitions_by_idWRITE

Update property definition via PATCH /api/projects/{project_id}/property_definitions/{id}/

property_definition:write
posthog_patch_api_projects_by_project_id_session_recording_playlists_by_short_idWRITE

Update session recording playlist via PATCH /api/projects/{project_id}/session_recording_playlists/{short_id}/

session_recording_playlist:write
posthog_patch_api_projects_by_project_id_session_recordings_by_idWRITE

Update session recording via PATCH /api/projects/{project_id}/session_recordings/{id}/

session_recording:write
posthog_patch_api_projects_by_project_id_subscriptions_by_idWRITE

Update subscription via PATCH /api/projects/{project_id}/subscriptions/{id}/

subscription:write
posthog_patch_api_projects_by_project_id_surveys_by_idWRITE

Update survey via PATCH /api/projects/{project_id}/surveys/{id}/

survey:write
posthog_patch_api_users_by_uuidWRITE

Update user via PATCH /api/users/{uuid}/ Update one or more of the authenticated user's profile fields or settings.

user:write
posthog_post_api_organizationsWRITE

Create organization via POST /api/organizations/

organization:write
posthog_post_api_organizations_by_organization_id_domainsWRITE

Create organization domain via POST /api/organizations/{organization_id}/domains/

organization:write
posthog_post_api_organizations_by_organization_id_invitesWRITE

Create organization invite via POST /api/organizations/{organization_id}/invites/

organization_member:write
posthog_post_api_organizations_by_organization_id_invites_bulkWRITE

Bulk organization invites via POST /api/organizations/{organization_id}/invites/bulk/

organization_member:write
posthog_post_api_organizations_by_organization_id_projectsWRITE

Create project via POST /api/organizations/{organization_id}/projects/ Projects for the current organization.

project:write
posthog_post_api_organizations_by_organization_id_rolesWRITE

Create role via POST /api/organizations/{organization_id}/roles/ Role endpoints disclose member records, so they scope them the same way the members list does when the org restricts member list visibility.

organization:write
posthog_post_api_organizations_by_organization_id_roles_by_role_id_role_membershipsWRITE

Create role memberships via POST /api/organizations/{organization_id}/roles/{role_id}/role_memberships/ Role endpoints disclose member records, so they scope them the same way the members list does when the org restricts member list visibility.

organization:write
posthog_post_api_projects_by_project_id_actionsWRITE

Create action via POST /api/projects/{project_id}/actions/

action:write
posthog_post_api_projects_by_project_id_alertsWRITE

Create alert via POST /api/projects/{project_id}/alerts/

alert:write
posthog_post_api_projects_by_project_id_alerts_by_id_test_deliveryWRITE

Test delivery alert via POST /api/projects/{project_id}/alerts/{id}/test-delivery/ Send a synthetic test notification to subscribed users and every active destination on this alert.

alert:write
posthog_post_api_projects_by_project_id_alerts_simulateWRITE

Simulate alerts via POST /api/projects/{project_id}/alerts/simulate/ Simulate a detector on an insight's historical data. Read-only — no AlertCheck records are created.

alert:readinsight:read
posthog_post_api_projects_by_project_id_annotationsWRITE

Create annotation via POST /api/projects/{project_id}/annotations/ Create, Read, Update and Delete annotations. [See docs](https://posthog.com/docs/data/annotations) for more information on annotations.

annotation:write
posthog_post_api_projects_by_project_id_cohortsWRITE

Create cohort via POST /api/projects/{project_id}/cohorts/

cohort:write
posthog_post_api_projects_by_project_id_commentsWRITE

Create comment via POST /api/projects/{project_id}/comments/ Create a comment. Support messages are deduplicated: an identical message from the same author on the same ticket within a short window returns the original comment with a 200 instead of creating a second one, and a 409 while a concurrent...

comment:write
posthog_post_api_projects_by_project_id_dashboard_templatesWRITE

Create dashboard template via POST /api/projects/{project_id}/dashboard_templates/

dashboard_template:write
posthog_post_api_projects_by_project_id_dashboardsWRITE

Create dashboard via POST /api/projects/{project_id}/dashboards/

dashboard:write
posthog_post_api_projects_by_project_id_dashboards_by_dashboard_id_collaboratorsWRITE

Create dashboard collaborators via POST /api/projects/{project_id}/dashboards/{dashboard_id}/collaborators/

dashboard:write
posthog_post_api_projects_by_project_id_dashboards_by_dashboard_id_sharing_passwordsWRITE

Create dashboard sharing passwords via POST /api/projects/{project_id}/dashboards/{dashboard_id}/sharing/passwords/ Create a new password for the sharing configuration.

sharing_configuration:write
posthog_post_api_projects_by_project_id_dashboards_by_dashboard_id_sharing_refreshWRITE

Create dashboard sharing refresh via POST /api/projects/{project_id}/dashboards/{dashboard_id}/sharing/refresh/

sharing_configuration:write
posthog_post_api_projects_by_project_id_dashboards_by_id_create_text_tileWRITE

Create text tile dashboard via POST /api/projects/{project_id}/dashboards/{id}/create_text_tile/ Add a markdown text tile to a dashboard. Text tiles render as markdown blocks on the dashboard — useful as section headings, dividers, or annotations between insight tiles to give the dashboard structure.

dashboard:write
posthog_post_api_projects_by_project_id_dashboards_by_id_delete_tileWRITE

Delete tile dashboard via POST /api/projects/{project_id}/dashboards/{id}/delete_tile/ Soft-delete a single tile from a dashboard. Works for text, insight, and button tiles. The underlying Insight, Text, or ButtonTile object is preserved — only the dashboard tile is hidden. To delete the entire dashboard, use the dashboard...

dashboard:write
posthog_post_api_projects_by_project_id_dashboards_by_id_reorder_tilesWRITE

Reorder tiles dashboard via POST /api/projects/{project_id}/dashboards/{id}/reorder_tiles/

dashboard:write
posthog_post_api_projects_by_project_id_dashboards_by_id_update_text_tileWRITE

Update text tile dashboard via POST /api/projects/{project_id}/dashboards/{id}/update_text_tile/ Update the markdown body, layout, or color of an existing text tile on a dashboard.

dashboard:write
posthog_post_api_projects_by_project_id_early_access_featureWRITE

Create early access feature via POST /api/projects/{project_id}/early_access_feature/

early_access_feature:write
posthog_post_api_projects_by_project_id_event_definitionsWRITE

Create event definition via POST /api/projects/{project_id}/event_definitions/

event_definition:write
posthog_post_api_projects_by_project_id_event_definitions_bulk_update_tagsWRITE

Bulk update tags event definitions via POST /api/projects/{project_id}/event_definitions/bulk_update_tags/ Add, remove, or replace tags across multiple event definitions in one request. Overrides ``TaggedItemViewSetMixin.bulk_update_tags``, which assumes integer PKs and runs object-level access-control filtering. Event definitions use UUID PKs...

event_definition:write
posthog_post_api_projects_by_project_id_event_definitions_bulk_update_verifiedWRITE

Bulk update verified event definitions via POST /api/projects/{project_id}/event_definitions/bulk_update_verified/ Mark multiple event definitions as verified or unverified in one request. In the same vein as ``bulk_update_tags``, but ``verified`` lives on the enterprise ``EnterpriseEventDefinition`` extension rather than the base row, so this action...

event_definition:write
posthog_post_api_projects_by_project_id_experiment_holdoutsWRITE

Create experiment holdout via POST /api/projects/{project_id}/experiment_holdouts/

experiment_holdout:write
posthog_post_api_projects_by_project_id_experiment_saved_metricsWRITE

Create experiment saved metric via POST /api/projects/{project_id}/experiment_saved_metrics/

experiment_saved_metric:write
posthog_post_api_projects_by_project_id_experimentsWRITE

Create experiment via POST /api/projects/{project_id}/experiments/ Create a new experiment in draft status with optional metrics.

experiment:write
posthog_post_api_projects_by_project_id_experiments_by_id_archiveWRITE

Archive experiment via POST /api/projects/{project_id}/experiments/{id}/archive/ Archive an ended experiment. Hides the experiment from the default list view. The experiment can be restored at any time by updating archived=false. When the linked feature flag is still enabled, pass disable_feature_flag=true to also...

experiment:write
posthog_post_api_projects_by_project_id_experiments_by_id_copy_to_projectWRITE

Copy to project experiment via POST /api/projects/{project_id}/experiments/{id}/copy_to_project/ Copy an experiment into another project in the same organization as a new draft.

experiment:write
posthog_post_api_projects_by_project_id_experiments_by_id_duplicateWRITE

Duplicate experiment via POST /api/projects/{project_id}/experiments/{id}/duplicate/ Mixin for ViewSets to handle approval-gate exceptions raised from decorated serializers. Intercepts ApprovalRequired (409) and PolicyConflict (400) raised by the @approval_gate decorator on serializer methods and converts them into the...

experiment:write
posthog_post_api_projects_by_project_id_experiments_by_id_endWRITE

End experiment via POST /api/projects/{project_id}/experiments/{id}/end/ End a running experiment without shipping a variant. Sets end_date to now and marks the experiment as stopped. The feature flag is NOT modified — users continue to see their assigned variants and exposure events ($feature_flag_called)...

experiment:write
posthog_post_api_projects_by_project_id_experiments_by_id_launchWRITE

Launch experiment via POST /api/projects/{project_id}/experiments/{id}/launch/ Launch a draft experiment. Validates the experiment is in draft state, activates its linked feature flag, sets start_date to the current server time, and transitions the experiment to running. Returns 400 if the experiment has already been...

experiment:write
posthog_post_api_projects_by_project_id_experiments_by_id_pauseWRITE

Pause experiment via POST /api/projects/{project_id}/experiments/{id}/pause/ Pause a running experiment. Deactivates the linked feature flag so it is no longer returned by the /decide endpoint. Users fall back to the application default (typically the control experience), and no new exposure events are recorded...

experiment:write
posthog_post_api_projects_by_project_id_experiments_by_id_resetWRITE

Reset experiment via POST /api/projects/{project_id}/experiments/{id}/reset/ Reset an experiment back to draft state. Clears start/end dates, conclusion, archived flag, and any flag-cleanup task pointer. The feature flag is left unchanged — users continue to see their assigned variants. Previously collected events...

experiment:write
posthog_post_api_projects_by_project_id_experiments_by_id_resumeWRITE

Resume experiment via POST /api/projects/{project_id}/experiments/{id}/resume/ Resume a paused experiment. Reactivates the linked feature flag so it is returned by /decide again. Users are re-bucketed deterministically into the same variants they had before the pause, and exposure tracking resumes. Returns 400 if the...

experiment:write
posthog_post_api_projects_by_project_id_experiments_by_id_ship_variantWRITE

Ship variant experiment via POST /api/projects/{project_id}/experiments/{id}/ship_variant/ Ship a variant and (optionally) end the experiment. Updates the feature flag so the selected variant gets 100% of the variant distribution. By default, existing release conditions on the flag are preserved untouched — the variant is served...

experiment:write
posthog_post_api_projects_by_project_id_experiments_by_id_unarchiveWRITE

Unarchive experiment via POST /api/projects/{project_id}/experiments/{id}/unarchive/ Unarchive an archived experiment. Restores the experiment to the default list view. Returns 400 if the experiment is not currently archived.

experiment:write
posthog_post_api_projects_by_project_id_exportsWRITE

Create export via POST /api/projects/{project_id}/exports/

export:write
posthog_post_api_projects_by_project_id_feature_flagsWRITE

Create feature flag via POST /api/projects/{project_id}/feature_flags/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

feature_flag:write
posthog_post_api_projects_by_project_id_feature_flags_bulk_deleteWRITE

Bulk delete feature flags via POST /api/projects/{project_id}/feature_flags/bulk_delete/ Bulk delete feature flags by filter criteria or explicit IDs. Accepts either: - {"filters": {...}} - Same filter params as list endpoint (search, active, type, etc.) - {"ids": [...]} - Explicit list of flag IDs (no limit) Returns same...

feature_flag:write
posthog_post_api_projects_by_project_id_feature_flags_bulk_update_tagsWRITE

Bulk update tags feature flags via POST /api/projects/{project_id}/feature_flags/bulk_update_tags/ Bulk update tags on multiple objects. PAT access: this action has no ``required_scopes=`` on the decorator — inheriting viewsets must add ``"bulk_update_tags"`` to their ``scope_object_write_actions`` list to accept personal API keys....

feature_flag:write
posthog_post_api_projects_by_project_id_feature_flags_by_id_test_evaluationWRITE

Test evaluation feature flag via POST /api/projects/{project_id}/feature_flags/{id}/test_evaluation/ Test feature flag evaluation against a specific user at an optional point in time. This endpoint allows testing how a feature flag would evaluate for a specific user, optionally at a historical timestamp. When a timestamp is provided, both...

feature_flag:read
posthog_post_api_projects_by_project_id_feature_flags_user_blast_radiusWRITE

Create feature flags user blast radius via POST /api/projects/{project_id}/feature_flags/user_blast_radius/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

feature_flag:read
posthog_post_api_projects_by_project_id_groupsWRITE

Create group via POST /api/projects/{project_id}/groups/

group:write
posthog_post_api_projects_by_project_id_groups_delete_propertyWRITE

Delete property groups via POST /api/projects/{project_id}/groups/delete_property/

group:write
posthog_post_api_projects_by_project_id_groups_types_by_group_type_index_metricsWRITE

Create group type metrics via POST /api/projects/{project_id}/groups_types/{group_type_index}/metrics/

usage_metric:write
posthog_post_api_projects_by_project_id_groups_update_propertyWRITE

Update property groups via POST /api/projects/{project_id}/groups/update_property/

group:write
posthog_post_api_projects_by_project_id_insight_variablesWRITE

Create insight variable via POST /api/projects/{project_id}/insight_variables/

insight_variable:write
posthog_post_api_projects_by_project_id_insightsWRITE

Create insight via POST /api/projects/{project_id}/insights/ DRF ViewSet mixin that gates coalesced responses behind permission checks. The QueryCoalescingMiddleware attaches cached response data to request.META["_coalesced_response"] for followers. This mixin runs DRF's initial() (auth +...

insight:write
posthog_post_api_projects_by_project_id_insights_bulk_deleteWRITE

Bulk delete insights via POST /api/projects/{project_id}/insights/bulk_delete/ Soft-delete insights in bulk by ID. Mirrors the single-insight delete: sets deleted=True, soft-deletes the insights' dashboard tiles, and removes their linked alerts. Insights the requester cannot edit are skipped and reported in...

insight:write
posthog_post_api_projects_by_project_id_insights_bulk_restoreWRITE

Bulk restore insights via POST /api/projects/{project_id}/insights/bulk_restore/ Restore soft-deleted insights in bulk by ID — the inverse of bulk_delete. Sets deleted=False and re-activates the insights' dashboard tiles on dashboards that still exist. Linked alerts are not restored (they are removed on delete)....

insight:write
posthog_post_api_projects_by_project_id_insights_by_insight_id_sharing_passwordsWRITE

Create insight sharing passwords via POST /api/projects/{project_id}/insights/{insight_id}/sharing/passwords/ Create a new password for the sharing configuration.

sharing_configuration:write
posthog_post_api_projects_by_project_id_insights_by_insight_id_sharing_refreshWRITE

Create insight sharing refresh via POST /api/projects/{project_id}/insights/{insight_id}/sharing/refresh/

sharing_configuration:write
posthog_post_api_projects_by_project_id_insights_viewedWRITE

Viewed insights via POST /api/projects/{project_id}/insights/viewed/ Record that the current user has just viewed one or more insights. Submitted ids that do not belong to the current project or that point at deleted insights are silently dropped, as are views from impersonated staff-support sessions....

insight:read
posthog_post_api_projects_by_project_id_persons_batch_by_distinct_idsWRITE

Create persons batch by distinct ids via POST /api/projects/{project_id}/persons/batch_by_distinct_ids/ This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the [capture API](https://posthog.com/docs/api/capture), the `$set` and `$unset`...

person:read
posthog_post_api_projects_by_project_id_persons_batch_by_uuidsWRITE

Create persons batch by uuids via POST /api/projects/{project_id}/persons/batch_by_uuids/ This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the [capture API](https://posthog.com/docs/api/capture), the `$set` and `$unset`...

person:read
posthog_post_api_projects_by_project_id_persons_bulk_deleteWRITE

Bulk delete persons via POST /api/projects/{project_id}/persons/bulk_delete/ This endpoint allows you to bulk delete persons, either by the PostHog person IDs or by distinct IDs. You can pass in a maximum of 1000 IDs per call. Only events captured before the request will be deleted.

person:write
posthog_post_api_projects_by_project_id_persons_by_id_delete_propertyWRITE

Delete property person via POST /api/projects/{project_id}/persons/{id}/delete_property/ This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the [capture API](https://posthog.com/docs/api/capture), the `$set` and `$unset`...

person:write
posthog_post_api_projects_by_project_id_persons_by_id_splitWRITE

Split person via POST /api/projects/{project_id}/persons/{id}/split/ Split distinct_ids off a merged person. Two mutually exclusive modes: - **`distinct_ids_to_split`** (recommended for surgical edits): moves only the listed distinct_ids off this person onto new single-id persons. The original person keeps...

person:write
posthog_post_api_projects_by_project_id_persons_by_id_update_propertyWRITE

Update property person via POST /api/projects/{project_id}/persons/{id}/update_property/ This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the [capture API](https://posthog.com/docs/api/capture), the `$set` and `$unset`...

person:write
posthog_post_api_projects_by_project_id_persons_reset_person_distinct_idWRITE

Reset person distinct id via POST /api/projects/{project_id}/persons/reset_person_distinct_id/ Reset a distinct_id for a deleted person. This allows the distinct_id to be used again.

person:write
posthog_post_api_projects_by_project_id_queryWRITE

Create query via POST /api/projects/{project_id}/query/ DRF ViewSet mixin that gates coalesced responses behind permission checks. The QueryCoalescingMiddleware attaches cached response data to request.META["_coalesced_response"] for followers. This mixin runs DRF's initial() (auth +...

query:read
posthog_post_api_projects_by_project_id_session_recording_playlistsWRITE

Create session recording playlist via POST /api/projects/{project_id}/session_recording_playlists/

session_recording_playlist:write
posthog_post_api_projects_by_project_id_session_recording_playlists_by_short_id_recordings_by_session_recording_idWRITE

Create session recording playlist recording via POST /api/projects/{project_id}/session_recording_playlists/{short_id}/recordings/{session_recording_id}/

session_recording_playlist:write
posthog_post_api_projects_by_project_id_session_recordings_by_recording_id_sharing_passwordsWRITE

Create session recording sharing passwords via POST /api/projects/{project_id}/session_recordings/{recording_id}/sharing/passwords/ Create a new password for the sharing configuration.

sharing_configuration:write
posthog_post_api_projects_by_project_id_session_recordings_by_recording_id_sharing_refreshWRITE

Create session recording sharing refresh via POST /api/projects/{project_id}/session_recordings/{recording_id}/sharing/refresh/

sharing_configuration:write
posthog_post_api_projects_by_project_id_subscriptionsWRITE

Create subscription via POST /api/projects/{project_id}/subscriptions/

subscription:write
posthog_post_api_projects_by_project_id_subscriptions_by_id_test_deliveryWRITE

Test delivery subscription via POST /api/projects/{project_id}/subscriptions/{id}/test-delivery/

subscription:write
posthog_post_api_projects_by_project_id_surveysWRITE

Create survey via POST /api/projects/{project_id}/surveys/

survey:write
posthog_post_api_projects_by_project_id_surveys_by_id_launchWRITE

Launch survey via POST /api/projects/{project_id}/surveys/{id}/launch/ Launch a survey by setting `start_date` to the current time. No-op if the survey is already launched (start_date set in the past) — returns the existing state unchanged. Does not affect archived surveys or surveys with an end_date in the...

survey:write
posthog_post_api_projects_by_project_id_surveys_by_id_responses_by_response_uuid_archiveWRITE

Create survey responses archive via POST /api/projects/{project_id}/surveys/{id}/responses/{response_uuid}/archive/ Archive a single survey response.

survey:write
posthog_post_api_projects_by_project_id_surveys_by_id_responses_by_response_uuid_unarchiveWRITE

Create survey responses unarchive via POST /api/projects/{project_id}/surveys/{id}/responses/{response_uuid}/unarchive/ Unarchive a single survey response.

survey:write
posthog_post_api_projects_by_project_id_surveys_by_id_stopWRITE

Stop survey via POST /api/projects/{project_id}/surveys/{id}/stop/ Stop a survey by setting `end_date` to the current time. No new responses are accepted after this; existing responses remain available. No-op if the survey already has an end_date in the past.

survey:write
posthog_put_api_organizations_by_idWRITE

Replace organization via PUT /api/organizations/{id}/

organization:write
posthog_put_api_organizations_by_organization_id_domains_by_idWRITE

Replace organization domain via PUT /api/organizations/{organization_id}/domains/{id}/

organization:write
posthog_put_api_organizations_by_organization_id_members_by_user_uuidWRITE

Replace organization member via PUT /api/organizations/{organization_id}/members/{user__uuid}/

organization_member:write
posthog_put_api_organizations_by_organization_id_projects_by_idWRITE

Replace project via PUT /api/organizations/{organization_id}/projects/{id}/ Replace a project and its settings. Prefer the PATCH endpoint for partial updates — PUT requires every writable field to be provided.

project:write
posthog_put_api_organizations_by_organization_id_roles_by_idWRITE

Replace role via PUT /api/organizations/{organization_id}/roles/{id}/ Role endpoints disclose member records, so they scope them the same way the members list does when the org restricts member list visibility.

organization:write
posthog_put_api_projects_by_project_id_actions_by_idWRITE

Replace action via PUT /api/projects/{project_id}/actions/{id}/

action:write
posthog_put_api_projects_by_project_id_alerts_by_idWRITE

Replace alert via PUT /api/projects/{project_id}/alerts/{id}/

alert:write
posthog_put_api_projects_by_project_id_annotations_by_idWRITE

Replace annotation via PUT /api/projects/{project_id}/annotations/{id}/ Create, Read, Update and Delete annotations. [See docs](https://posthog.com/docs/data/annotations) for more information on annotations.

annotation:write
posthog_put_api_projects_by_project_id_cohorts_by_idWRITE

Replace cohort via PUT /api/projects/{project_id}/cohorts/{id}/

cohort:write
posthog_put_api_projects_by_project_id_comments_by_idWRITE

Replace comment via PUT /api/projects/{project_id}/comments/{id}/

comment:write
posthog_put_api_projects_by_project_id_dashboard_templates_by_idWRITE

Replace dashboard template via PUT /api/projects/{project_id}/dashboard_templates/{id}/

dashboard_template:write
posthog_put_api_projects_by_project_id_dashboards_by_idWRITE

Replace dashboard via PUT /api/projects/{project_id}/dashboards/{id}/

dashboard:write
posthog_put_api_projects_by_project_id_early_access_feature_by_idWRITE

Replace early access feature via PUT /api/projects/{project_id}/early_access_feature/{id}/

early_access_feature:write
posthog_put_api_projects_by_project_id_event_definitions_by_idWRITE

Replace event definition via PUT /api/projects/{project_id}/event_definitions/{id}/

event_definition:write
posthog_put_api_projects_by_project_id_experiment_holdouts_by_idWRITE

Replace experiment holdout via PUT /api/projects/{project_id}/experiment_holdouts/{id}/

experiment_holdout:write
posthog_put_api_projects_by_project_id_experiment_saved_metrics_by_idWRITE

Replace experiment saved metric via PUT /api/projects/{project_id}/experiment_saved_metrics/{id}/

experiment_saved_metric:write
posthog_put_api_projects_by_project_id_experiments_by_idWRITE

Replace experiment via PUT /api/projects/{project_id}/experiments/{id}/ Mixin for ViewSets to handle approval-gate exceptions raised from decorated serializers. Intercepts ApprovalRequired (409) and PolicyConflict (400) raised by the @approval_gate decorator on serializer methods and converts them into the...

experiment:write
posthog_put_api_projects_by_project_id_feature_flags_by_idWRITE

Replace feature flag via PUT /api/projects/{project_id}/feature_flags/{id}/ Create, read, update and delete feature flags. [See docs](https://posthog.com/docs/feature-flags) for more information on feature flags. If you're looking to use feature flags on your application, you can either use our JavaScript Library...

feature_flag:write
posthog_put_api_projects_by_project_id_groups_types_by_group_type_index_metrics_by_idWRITE

Replace group type metric via PUT /api/projects/{project_id}/groups_types/{group_type_index}/metrics/{id}/

usage_metric:write
posthog_put_api_projects_by_project_id_insight_variables_by_idWRITE

Replace insight variable via PUT /api/projects/{project_id}/insight_variables/{id}/

insight_variable:write
posthog_put_api_projects_by_project_id_insights_by_idWRITE

Replace insight via PUT /api/projects/{project_id}/insights/{id}/ DRF ViewSet mixin that gates coalesced responses behind permission checks. The QueryCoalescingMiddleware attaches cached response data to request.META["_coalesced_response"] for followers. This mixin runs DRF's initial() (auth +...

insight:write
posthog_put_api_projects_by_project_id_persons_by_idWRITE

Replace person via PUT /api/projects/{project_id}/persons/{id}/ Only for setting properties on the person. "properties" from the request data will be updated via a "$set" event. This means that only the properties listed will be updated, but other properties won't be removed nor updated. If you would...

person:write
posthog_put_api_projects_by_project_id_property_definitions_by_idWRITE

Replace property definition via PUT /api/projects/{project_id}/property_definitions/{id}/

property_definition:write
posthog_put_api_projects_by_project_id_session_recording_playlists_by_short_idWRITE

Replace session recording playlist via PUT /api/projects/{project_id}/session_recording_playlists/{short_id}/

session_recording_playlist:write
posthog_put_api_projects_by_project_id_session_recordings_by_idWRITE

Replace session recording via PUT /api/projects/{project_id}/session_recordings/{id}/

session_recording:write
posthog_put_api_projects_by_project_id_subscriptions_by_idWRITE

Replace subscription via PUT /api/projects/{project_id}/subscriptions/{id}/

subscription:write
posthog_put_api_projects_by_project_id_surveys_by_idWRITE

Replace survey via PUT /api/projects/{project_id}/surveys/{id}/

survey:write

Put PostHog behind one governed endpoint.

Same permissions, same audit trail, whatever else you connect next.