How AI is applied across API Evangelist and APIs.io. Read my AI disclosure →
API Evangelist API Evangelist
Discovery
Learnings
Guidance
Toolbox
Alignment
API Evangelist LLC

PostHog core API

The core API from PostHog — 182 operation(s) for core.

PostHog core API is one of 139 APIs that PostHog publishes on the APIs.io network, described by a machine-readable OpenAPI specification and an AsyncAPI event-driven specification.

Tagged areas include Core. The published artifact set on APIs.io includes an OpenAPI specification, API documentation, a getting-started guide, authentication docs, and an AsyncAPI specification.

This API exposes 263 operations across 182 paths, and defines 137 schemas. It is described by OpenAPI 3.2.0, at version 1.0.0.

Requests are made against a single base URL, https://app.posthog.com/api.

263 operations 182 paths 137 schemas 27 DELETE102 GET30 PATCH85 POST19 PUT

Metadata

The identity and technical contract details declared by the specification.

Specification
OpenAPI 3.2.0
API Version
1.0.0
Base URL
https://app.posthog.com/api
Authentication
HTTP Bearer
Resource Areas
1

Authentication & Security 1

PostHog core API declares 1 security scheme for authenticating requests. It accepts HTTP bearer tokens (PersonalAPIKeyAuth).

Paths & Operations 263

Across 182 paths, the API surfaces 263 operations — 27 DELETE, 102 GET, 30 PATCH, 85 POST, 19 PUT. Each is listed below with its method, path, parameters, and response codes.

core 263
GET
/api/environments/{environment_id}/dashboards/deprecated
environments_dashboards_list 4 params → 200
POST
/api/environments/{environment_id}/dashboards/deprecated
environments_dashboards_create 2 params body → 201
GET
/api/environments/{environment_id}/dashboards/{dashboard_id}/sharing/deprecated
environments_dashboards_sharing_list 2 params → 200
POST
/api/environments/{environment_id}/dashboards/{dashboard_id}/sharing/passwords/deprecated
Create a new password for the sharing configuration.
environments_dashboards_sharing_passwords_create 2 params body → 200
DELETE
/api/environments/{environment_id}/dashboards/{dashboard_id}/sharing/passwords/{password_id}/deprecated
Delete a password from the sharing configuration.
environments_dashboards_sharing_passwords_destroy 3 params → 204
POST
/api/environments/{environment_id}/dashboards/{dashboard_id}/sharing/refresh/deprecated
environments_dashboards_sharing_refresh_create 2 params body → 200
GET
/api/environments/{environment_id}/dashboards/{id}/deprecated
environments_dashboards_retrieve 5 params → 200
PUT
/api/environments/{environment_id}/dashboards/{id}/deprecated
environments_dashboards_update 3 params body → 200
PATCH
/api/environments/{environment_id}/dashboards/{id}/deprecated
environments_dashboards_partial_update 3 params body → 200
DELETE
/api/environments/{environment_id}/dashboards/{id}/deprecated
Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true
environments_dashboards_destroy 3 params → 405
POST
/api/environments/{environment_id}/dashboards/{id}/analyze_refresh_result/deprecated
Generate AI analysis comparing before/after dashboard refresh. Expects cachekey in request body pointing to the stored 'before' state.
environments_dashboards_analyze_refresh_result_create 3 params body → 200
POST
/api/environments/{environment_id}/dashboards/{id}/copy_tile/deprecated
Copy an existing dashboard tile to another dashboard (insight or text card; new tile row).
environments_dashboards_copy_tile_create 3 params body → 200
PATCH
/api/environments/{environment_id}/dashboards/{id}/move_tile/deprecated
environments_dashboards_move_tile_partial_update 3 params body → 200
POST
/api/environments/{environment_id}/dashboards/{id}/reorder_tiles/deprecated
environments_dashboards_reorder_tiles_create 3 params body → 200
GET
/api/environments/{environment_id}/dashboards/{id}/run_insights/deprecated
Run all insights on a dashboard and return their results.
environments_dashboards_run_insights_retrieve 7 params → 200
POST
/api/environments/{environment_id}/dashboards/{id}/snapshot/deprecated
Snapshot the current dashboard state (from cache) for AI analysis. Returns a cachekey representing the 'before' state, to be used with analyzerefreshresult.
environments_dashboards_snapshot_create 3 params body → 200
GET
/api/environments/{environment_id}/dashboards/{id}/stream_tiles/deprecated
Stream dashboard metadata and tiles via Server-Sent Events. Sends metadata first, then tiles as they are rendered.
environments_dashboards_stream_tiles_retrieve 6 params → 200
POST
/api/environments/{environment_id}/dashboards/bulk_update_tags/deprecated
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…
environments_dashboards_bulk_update_tags_create 2 params body → 200
POST
/api/environments/{environment_id}/dashboards/create_from_template_json/deprecated
environments_dashboards_create_from_template_json_create 2 params body → 200
POST
/api/environments/{environment_id}/dashboards/create_unlisted_dashboard/deprecated
Creates an unlisted dashboard from template by tag. Enforces uniqueness (one per tag per team). Returns 409 if unlisted dashboard with this tag already exists.
environments_dashboards_create_unlisted_dashboard_create 2 params body → 200
GET
/api/environments/{environment_id}/exports/deprecated
environments_exports_list 3 params → 200
POST
/api/environments/{environment_id}/exports/deprecated
environments_exports_create 1 param body → 201
GET
/api/environments/{environment_id}/exports/{id}/deprecated
environments_exports_retrieve 2 params → 200
GET
/api/environments/{environment_id}/exports/{id}/content/deprecated
environments_exports_content_retrieve 2 params → 200
GET
/api/environments/{environment_id}/file_system/deprecated
environments_file_system_list 4 params → 200
POST
/api/environments/{environment_id}/file_system/deprecated
environments_file_system_create 1 param body → 201
GET
/api/environments/{environment_id}/file_system/{id}/deprecated
environments_file_system_retrieve 2 params → 200
PUT
/api/environments/{environment_id}/file_system/{id}/deprecated
environments_file_system_update 2 params body → 200
PATCH
/api/environments/{environment_id}/file_system/{id}/deprecated
environments_file_system_partial_update 2 params body → 200
DELETE
/api/environments/{environment_id}/file_system/{id}/deprecated
environments_file_system_destroy 2 params → 204
POST
/api/environments/{environment_id}/file_system/{id}/count/deprecated
Get count of all files in a folder.
environments_file_system_count_create 2 params body → 200
POST
/api/environments/{environment_id}/file_system/{id}/link/deprecated
environments_file_system_link_create 2 params body → 200
POST
/api/environments/{environment_id}/file_system/{id}/move/deprecated
environments_file_system_move_create 2 params body → 200
POST
/api/environments/{environment_id}/file_system/count_by_path/deprecated
Get count of all files in a folder.
environments_file_system_count_by_path_create 1 param body → 200
GET
/api/environments/{environment_id}/file_system/log_view/deprecated
environments_file_system_log_view_retrieve 1 param → 200
POST
/api/environments/{environment_id}/file_system/log_view/deprecated
environments_file_system_log_view_create 1 param body → 200
POST
/api/environments/{environment_id}/file_system/undo_delete/deprecated
environments_file_system_undo_delete_create 1 param body → 200
GET
/api/environments/{environment_id}/file_system/unfiled/deprecated
environments_file_system_unfiled_retrieve 1 param → 200
GET
/api/environments/{environment_id}/groups/deprecated
List all groups of a specific group type. You must pass ?grouptypeindex= in the URL. To get a list of valid group types, call /api/:projectid/groupstypes/
environments_groups_list 4 params → 200
POST
/api/environments/{environment_id}/groups/deprecated
environments_groups_create 1 param body → 201
GET
/api/environments/{environment_id}/groups/activity/deprecated
environments_groups_activity_retrieve 3 params → 200
POST
/api/environments/{environment_id}/groups/delete_property/deprecated
environments_groups_delete_property_create 3 params body → 200
GET
/api/environments/{environment_id}/groups/find/deprecated
environments_groups_find_retrieve 3 params → 200
GET
/api/environments/{environment_id}/groups/property_definitions/deprecated
environments_groups_property_definitions_retrieve 1 param → 200
GET
/api/environments/{environment_id}/groups/property_values/deprecated
environments_groups_property_values_retrieve 1 param → 200
GET
/api/environments/{environment_id}/groups/related/deprecated
environments_groups_related_retrieve 3 params → 200
POST
/api/environments/{environment_id}/groups/update_property/deprecated
environments_groups_update_property_create 3 params body → 200
GET
/api/environments/{environment_id}/insights/{insight_id}/sharing/deprecated
environments_insights_sharing_list 2 params → 200
POST
/api/environments/{environment_id}/insights/{insight_id}/sharing/passwords/deprecated
Create a new password for the sharing configuration.
environments_insights_sharing_passwords_create 2 params body → 200
DELETE
/api/environments/{environment_id}/insights/{insight_id}/sharing/passwords/{password_id}/deprecated
Delete a password from the sharing configuration.
environments_insights_sharing_passwords_destroy 3 params → 204
POST
/api/environments/{environment_id}/insights/{insight_id}/sharing/refresh/deprecated
environments_insights_sharing_refresh_create 2 params body → 200
GET
/api/environments/{environment_id}/project_secret_api_keys/deprecated
environments_project_secret_api_keys_list 3 params → 200
POST
/api/environments/{environment_id}/project_secret_api_keys/deprecated
environments_project_secret_api_keys_create 1 param body → 201
GET
/api/environments/{environment_id}/project_secret_api_keys/{id}/deprecated
environments_project_secret_api_keys_retrieve 2 params → 200
PUT
/api/environments/{environment_id}/project_secret_api_keys/{id}/deprecated
environments_project_secret_api_keys_update 2 params body → 200
PATCH
/api/environments/{environment_id}/project_secret_api_keys/{id}/deprecated
environments_project_secret_api_keys_partial_update 2 params body → 200
DELETE
/api/environments/{environment_id}/project_secret_api_keys/{id}/deprecated
environments_project_secret_api_keys_destroy 2 params → 204
POST
/api/environments/{environment_id}/project_secret_api_keys/{id}/roll/deprecated
Roll a project secret API key
environments_project_secret_api_keys_roll_create 2 params → 200
GET
/api/environments/{environment_id}/session_recordings/{recording_id}/sharing/deprecated
environments_session_recordings_sharing_list 2 params → 200
POST
/api/environments/{environment_id}/session_recordings/{recording_id}/sharing/passwords/deprecated
Create a new password for the sharing configuration.
environments_session_recordings_sharing_passwords_create 2 params body → 200
DELETE
/api/environments/{environment_id}/session_recordings/{recording_id}/sharing/passwords/{password_id}/deprecated
Delete a password from the sharing configuration.
environments_session_recordings_sharing_passwords_destroy 3 params → 204
POST
/api/environments/{environment_id}/session_recordings/{recording_id}/sharing/refresh/deprecated
environments_session_recordings_sharing_refresh_create 2 params body → 200
GET
/api/environments/{environment_id}/subscriptions/deprecated
environments_subscriptions_list 10 params → 200
POST
/api/environments/{environment_id}/subscriptions/deprecated
environments_subscriptions_create 1 param body → 201
GET
/api/environments/{environment_id}/subscriptions/{id}/deprecated
environments_subscriptions_retrieve 2 params → 200
PUT
/api/environments/{environment_id}/subscriptions/{id}/deprecated
environments_subscriptions_update 2 params body → 200
PATCH
/api/environments/{environment_id}/subscriptions/{id}/deprecated
environments_subscriptions_partial_update 2 params body → 200
DELETE
/api/environments/{environment_id}/subscriptions/{id}/deprecated
Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true
environments_subscriptions_destroy 2 params → 405
POST
/api/environments/{environment_id}/subscriptions/{id}/test-delivery/deprecated
environments_subscriptions_test_delivery_create 2 params → 202
GET
/api/environments/{project_id}/subscriptions/{subscription_id}/deliveries/
List subscription deliveries
subscriptions_deliveries_list 4 params → 200
GET
/api/environments/{project_id}/subscriptions/{subscription_id}/deliveries/{id}/
Retrieve subscription delivery
subscriptions_deliveries_retrieve 3 params → 200
GET
/api/organizations/{organization_id}/domains/
domains_list 3 params → 200
POST
/api/organizations/{organization_id}/domains/
domains_create 1 param body → 201
GET
/api/organizations/{organization_id}/domains/{id}/
domains_retrieve 2 params → 200
PUT
/api/organizations/{organization_id}/domains/{id}/
domains_update 2 params body → 200
PATCH
/api/organizations/{organization_id}/domains/{id}/
domains_partial_update 2 params body → 200
DELETE
/api/organizations/{organization_id}/domains/{id}/
domains_destroy 2 params → 204
GET
/api/organizations/{organization_id}/domains/{id}/scim/logs/
domains_scim_logs_retrieve 2 params → 200
POST
/api/organizations/{organization_id}/domains/{id}/scim/token/
Regenerate SCIM bearer token.
domains_scim_token_create 2 params body → 200
POST
/api/organizations/{organization_id}/domains/{id}/verify/
domains_verify_create 2 params body → 200
GET
/api/organizations/{organization_id}/invites/
invites_list 3 params → 200
POST
/api/organizations/{organization_id}/invites/
invites_create 1 param body → 201
DELETE
/api/organizations/{organization_id}/invites/{id}/
invites_destroy 2 params → 204
POST
/api/organizations/{organization_id}/invites/bulk/
invites_bulk_create 1 param body → 200
GET
/api/organizations/{organization_id}/legal_documents/
legal_documents_list 3 params → 200
POST
/api/organizations/{organization_id}/legal_documents/
legal_documents_create 1 param body → 201
GET
/api/organizations/{organization_id}/legal_documents/{id}/
legal_documents_retrieve 2 params → 200
GET
/api/organizations/{organization_id}/legal_documents/{id}/download/
Short-lived redirect to the signed PDF in object storage. 404 while the envelope is still out for signature (or if the upload hasn't completed yet). The underlying presigned URL expires in ~60s; clie…
legal_documents_download_retrieve 2 params → 302404
GET
/api/organizations/{organization_id}/members/
members_list 4 params → 200
PUT
/api/organizations/{organization_id}/members/{user__uuid}/
members_update 2 params body → 200
PATCH
/api/organizations/{organization_id}/members/{user__uuid}/
members_partial_update 2 params body → 200
DELETE
/api/organizations/{organization_id}/members/{user__uuid}/
members_destroy 2 params → 204
GET
/api/organizations/{organization_id}/members/{user__uuid}/scoped_api_keys/
members_scoped_api_keys_retrieve 2 params → 200
GET
/api/organizations/{organization_id}/oauth_applications/
ViewSet for listing OAuth applications at the organization level (read-only).
oauth_applications_list 3 params → 200
GET
/api/organizations/{organization_id}/projects/
Projects for the current organization.
organizations_projects_list 4 params → 200
POST
/api/organizations/{organization_id}/projects/
Projects for the current organization.
organizations_projects_create 1 param body → 201
GET
/api/organizations/{organization_id}/projects/{id}/
Retrieve a project and its settings.
organizations_projects_retrieve 2 params → 200
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.
organizations_projects_update 2 params body → 200
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.
organizations_projects_partial_update 2 params body → 200
DELETE
/api/organizations/{organization_id}/projects/{id}/
Projects for the current organization.
organizations_projects_destroy 2 params → 204
GET
/api/organizations/{organization_id}/projects/{id}/activity/
Projects for the current organization.
organizations_projects_activity_retrieve 2 params → 200
PATCH
/api/organizations/{organization_id}/projects/{id}/add_product_intent/
Projects for the current organization.
organizations_projects_add_product_intent_partial_update 2 params body → 200
POST
/api/organizations/{organization_id}/projects/{id}/change_organization/
Projects for the current organization.
organizations_projects_change_organization_create 2 params body → 200
PATCH
/api/organizations/{organization_id}/projects/{id}/complete_product_onboarding/
Projects for the current organization.
organizations_projects_complete_product_onboarding_partial_update 2 params body → 200
PATCH
/api/organizations/{organization_id}/projects/{id}/delete_secret_token_backup/
Projects for the current organization.
organizations_projects_delete_secret_token_backup_partial_update 2 params body → 200
POST
/api/organizations/{organization_id}/projects/{id}/generate_conversations_public_token/
Projects for the current organization.
organizations_projects_generate_conversations_public_token_create 2 params body → 200
GET
/api/organizations/{organization_id}/projects/{id}/is_generating_demo_data/
Projects for the current organization.
organizations_projects_is_generating_demo_data_retrieve 2 params → 200
PATCH
/api/organizations/{organization_id}/projects/{id}/reset_token/
Projects for the current organization.
organizations_projects_reset_token_partial_update 2 params body → 200
PATCH
/api/organizations/{organization_id}/projects/{id}/rotate_secret_token/
Projects for the current organization.
organizations_projects_rotate_secret_token_partial_update 2 params body → 200
GET
/api/organizations/{organization_id}/roles/
roles_list 3 params → 200
POST
/api/organizations/{organization_id}/roles/
roles_create 1 param body → 201
GET
/api/organizations/{organization_id}/roles/{id}/
roles_retrieve 2 params → 200
PUT
/api/organizations/{organization_id}/roles/{id}/
roles_update 2 params body → 200
PATCH
/api/organizations/{organization_id}/roles/{id}/
roles_partial_update 2 params body → 200
DELETE
/api/organizations/{organization_id}/roles/{id}/
roles_destroy 2 params → 204
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.
annotations_list 4 params → 200
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.
annotations_create 1 param body → 201
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.
annotations_retrieve 2 params → 200
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.
annotations_update 2 params body → 200
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.
annotations_partial_update 2 params body → 200
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
annotations_destroy 2 params → 405
GET
/api/projects/{project_id}/cohorts/
cohorts_list 3 params → 200
POST
/api/projects/{project_id}/cohorts/
cohorts_create 1 param body → 201
GET
/api/projects/{project_id}/cohorts/{id}/
cohorts_retrieve 2 params → 200
PUT
/api/projects/{project_id}/cohorts/{id}/
cohorts_update 2 params body → 200
PATCH
/api/projects/{project_id}/cohorts/{id}/
cohorts_partial_update 2 params body → 200
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
cohorts_destroy 2 params → 405
GET
/api/projects/{project_id}/cohorts/{id}/activity/
cohorts_activity_retrieve 2 params → 200
PATCH
/api/projects/{project_id}/cohorts/{id}/add_persons_to_static_cohort/
cohorts_add_persons_to_static_cohort_partial_update 2 params body → 200
GET
/api/projects/{project_id}/cohorts/{id}/calculation_history/
cohorts_calculation_history_retrieve 2 params → 200
GET
/api/projects/{project_id}/cohorts/{id}/persons/
cohorts_persons_retrieve 5 params → 200
PATCH
/api/projects/{project_id}/cohorts/{id}/remove_person_from_static_cohort/
cohorts_remove_person_from_static_cohort_partial_update 2 params body → 200
GET
/api/projects/{project_id}/cohorts/activity/
cohorts_all_activity_retrieve 1 param → 200
GET
/api/projects/{project_id}/comments/
comments_list 6 params → 200
POST
/api/projects/{project_id}/comments/
comments_create 1 param body → 201
GET
/api/projects/{project_id}/comments/{id}/
comments_retrieve 2 params → 200
PUT
/api/projects/{project_id}/comments/{id}/
comments_update 2 params body → 200
PATCH
/api/projects/{project_id}/comments/{id}/
comments_partial_update 2 params body → 200
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
comments_destroy 2 params → 405
GET
/api/projects/{project_id}/comments/{id}/thread/
comments_thread_retrieve 2 params → 200
GET
/api/projects/{project_id}/comments/count/
comments_count_retrieve 1 param → 200
GET
/api/projects/{project_id}/dashboard_templates/
dashboard_templates_list 6 params → 200
POST
/api/projects/{project_id}/dashboard_templates/
dashboard_templates_create 1 param body → 201
GET
/api/projects/{project_id}/dashboard_templates/{id}/
dashboard_templates_retrieve 2 params → 200
PUT
/api/projects/{project_id}/dashboard_templates/{id}/
dashboard_templates_update 2 params body → 200
PATCH
/api/projects/{project_id}/dashboard_templates/{id}/
dashboard_templates_partial_update 2 params body → 200
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_templates_destroy 2 params → 405
POST
/api/projects/{project_id}/dashboard_templates/copy_between_projects/
Copy a team template to this project
dashboard_templates_copy_between_projects_create 1 param body → 201
GET
/api/projects/{project_id}/dashboard_templates/json_schema/
dashboard_templates_json_schema_retrieve 1 param → 200
GET
/api/projects/{project_id}/dashboards/
dashboards_list 4 params → 200
POST
/api/projects/{project_id}/dashboards/
dashboards_create 2 params body → 201
GET
/api/projects/{project_id}/dashboards/{dashboard_id}/sharing/
dashboards_sharing_list 2 params → 200
POST
/api/projects/{project_id}/dashboards/{dashboard_id}/sharing/passwords/
Create a new password for the sharing configuration.
dashboards_sharing_passwords_create 2 params body → 200
DELETE
/api/projects/{project_id}/dashboards/{dashboard_id}/sharing/passwords/{password_id}/
Delete a password from the sharing configuration.
dashboards_sharing_passwords_destroy 3 params → 204
POST
/api/projects/{project_id}/dashboards/{dashboard_id}/sharing/refresh/
dashboards_sharing_refresh_create 2 params body → 200
GET
/api/projects/{project_id}/dashboards/{id}/
dashboards_retrieve 5 params → 200
PUT
/api/projects/{project_id}/dashboards/{id}/
dashboards_update 3 params body → 200
PATCH
/api/projects/{project_id}/dashboards/{id}/
dashboards_partial_update 3 params body → 200
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
dashboards_destroy 3 params → 405
POST
/api/projects/{project_id}/dashboards/{id}/analyze_refresh_result/
Generate AI analysis comparing before/after dashboard refresh. Expects cachekey in request body pointing to the stored 'before' state.
dashboards_analyze_refresh_result_create 3 params body → 200
POST
/api/projects/{project_id}/dashboards/{id}/copy_tile/
Copy an existing dashboard tile to another dashboard (insight or text card; new tile row).
dashboards_copy_tile_create 3 params body → 200
PATCH
/api/projects/{project_id}/dashboards/{id}/move_tile/
dashboards_move_tile_partial_update 3 params body → 200
POST
/api/projects/{project_id}/dashboards/{id}/reorder_tiles/
dashboards_reorder_tiles_create 3 params body → 200
GET
/api/projects/{project_id}/dashboards/{id}/run_insights/
Run all insights on a dashboard and return their results.
dashboards_run_insights_retrieve 7 params → 200
POST
/api/projects/{project_id}/dashboards/{id}/snapshot/
Snapshot the current dashboard state (from cache) for AI analysis. Returns a cachekey representing the 'before' state, to be used with analyzerefreshresult.
dashboards_snapshot_create 3 params body → 200
GET
/api/projects/{project_id}/dashboards/{id}/stream_tiles/
Stream dashboard metadata and tiles via Server-Sent Events. Sends metadata first, then tiles as they are rendered.
dashboards_stream_tiles_retrieve 6 params → 200
POST
/api/projects/{project_id}/dashboards/bulk_update_tags/
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…
dashboards_bulk_update_tags_create 2 params body → 200
POST
/api/projects/{project_id}/dashboards/create_from_template_json/
dashboards_create_from_template_json_create 2 params body → 200
POST
/api/projects/{project_id}/dashboards/create_unlisted_dashboard/
Creates an unlisted dashboard from template by tag. Enforces uniqueness (one per tag per team). Returns 409 if unlisted dashboard with this tag already exists.
dashboards_create_unlisted_dashboard_create 2 params body → 200
GET
/api/projects/{project_id}/event_definitions/
event_definitions_list 3 params → 200
POST
/api/projects/{project_id}/event_definitions/
event_definitions_create 1 param body → 201
GET
/api/projects/{project_id}/event_definitions/{id}/
event_definitions_retrieve 2 params → 200
PUT
/api/projects/{project_id}/event_definitions/{id}/
event_definitions_update 2 params body → 200
PATCH
/api/projects/{project_id}/event_definitions/{id}/
event_definitions_partial_update 2 params body → 200
DELETE
/api/projects/{project_id}/event_definitions/{id}/
event_definitions_destroy 2 params → 204
GET
/api/projects/{project_id}/event_definitions/{id}/metrics/
event_definitions_metrics_retrieve 2 params → 200
POST
/api/projects/{project_id}/event_definitions/bulk_update_tags/
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…
event_definitions_bulk_update_tags_create 1 param body → 200
GET
/api/projects/{project_id}/event_definitions/by_name/
Get event definition by exact name
event_definitions_by_name_retrieve 2 params → 200
GET
/api/projects/{project_id}/event_definitions/golang/
event_definitions_golang_retrieve 1 param → 200
GET
/api/projects/{project_id}/event_definitions/promoted_properties/
Resolve team-configured promoted properties for event definitions. The response only contains entries where a non-null promotedproperty is set on the EventDefinition. Callers should fall back to the…
event_definitions_promoted_properties_retrieve 2 params → 200
GET
/api/projects/{project_id}/event_definitions/python/
event_definitions_python_retrieve 1 param → 200
GET
/api/projects/{project_id}/event_definitions/typescript/
event_definitions_typescript_retrieve 1 param → 200
GET
/api/projects/{project_id}/exports/
exports_list 3 params → 200
POST
/api/projects/{project_id}/exports/
exports_create 1 param body → 201
GET
/api/projects/{project_id}/exports/{id}/
exports_retrieve 2 params → 200
GET
/api/projects/{project_id}/exports/{id}/content/
exports_content_retrieve 2 params → 200
GET
/api/projects/{project_id}/file_system/
file_system_list 4 params → 200
POST
/api/projects/{project_id}/file_system/
file_system_create 1 param body → 201
GET
/api/projects/{project_id}/file_system/{id}/
file_system_retrieve 2 params → 200
PUT
/api/projects/{project_id}/file_system/{id}/
file_system_update 2 params body → 200
PATCH
/api/projects/{project_id}/file_system/{id}/
file_system_partial_update 2 params body → 200
DELETE
/api/projects/{project_id}/file_system/{id}/
file_system_destroy 2 params → 204
POST
/api/projects/{project_id}/file_system/{id}/count/
Get count of all files in a folder.
file_system_count_create 2 params body → 200
POST
/api/projects/{project_id}/file_system/{id}/link/
file_system_link_create 2 params body → 200
POST
/api/projects/{project_id}/file_system/{id}/move/
file_system_move_create 2 params body → 200
POST
/api/projects/{project_id}/file_system/count_by_path/
Get count of all files in a folder.
file_system_count_by_path_create 1 param body → 200
GET
/api/projects/{project_id}/file_system/log_view/
file_system_log_view_retrieve 1 param → 200
POST
/api/projects/{project_id}/file_system/log_view/
file_system_log_view_create 1 param body → 200
POST
/api/projects/{project_id}/file_system/undo_delete/
file_system_undo_delete_create 1 param body → 200
GET
/api/projects/{project_id}/file_system/unfiled/
file_system_unfiled_retrieve 1 param → 200
GET
/api/projects/{project_id}/groups/
List all groups of a specific group type. You must pass ?grouptypeindex= in the URL. To get a list of valid group types, call /api/:projectid/groupstypes/
groups_list 4 params → 200
POST
/api/projects/{project_id}/groups/
groups_create 1 param body → 201
GET
/api/projects/{project_id}/groups/activity/
groups_activity_retrieve 3 params → 200
POST
/api/projects/{project_id}/groups/delete_property/
groups_delete_property_create 3 params body → 200
GET
/api/projects/{project_id}/groups/find/
groups_find_retrieve 3 params → 200
GET
/api/projects/{project_id}/groups/property_definitions/
groups_property_definitions_retrieve 1 param → 200
GET
/api/projects/{project_id}/groups/property_values/
groups_property_values_retrieve 1 param → 200
GET
/api/projects/{project_id}/groups/related/
groups_related_retrieve 3 params → 200
POST
/api/projects/{project_id}/groups/update_property/
groups_update_property_create 3 params body → 200
GET
/api/projects/{project_id}/insights/{insight_id}/sharing/
insights_sharing_list 2 params → 200
POST
/api/projects/{project_id}/insights/{insight_id}/sharing/passwords/
Create a new password for the sharing configuration.
insights_sharing_passwords_create 2 params body → 200
DELETE
/api/projects/{project_id}/insights/{insight_id}/sharing/passwords/{password_id}/
Delete a password from the sharing configuration.
insights_sharing_passwords_destroy 3 params → 204
POST
/api/projects/{project_id}/insights/{insight_id}/sharing/refresh/
insights_sharing_refresh_create 2 params body → 200
GET
/api/projects/{project_id}/project_secret_api_keys/
project_secret_api_keys_list 3 params → 200
POST
/api/projects/{project_id}/project_secret_api_keys/
project_secret_api_keys_create 1 param body → 201
GET
/api/projects/{project_id}/project_secret_api_keys/{id}/
project_secret_api_keys_retrieve 2 params → 200
PUT
/api/projects/{project_id}/project_secret_api_keys/{id}/
project_secret_api_keys_update 2 params body → 200
PATCH
/api/projects/{project_id}/project_secret_api_keys/{id}/
project_secret_api_keys_partial_update 2 params body → 200
DELETE
/api/projects/{project_id}/project_secret_api_keys/{id}/
project_secret_api_keys_destroy 2 params → 204
POST
/api/projects/{project_id}/project_secret_api_keys/{id}/roll/
Roll a project secret API key
project_secret_api_keys_roll_create 2 params → 200
GET
/api/projects/{project_id}/property_definitions/
property_definitions_list 15 params → 200
GET
/api/projects/{project_id}/property_definitions/{id}/
property_definitions_retrieve 2 params → 200
PUT
/api/projects/{project_id}/property_definitions/{id}/
property_definitions_update 2 params body → 200
PATCH
/api/projects/{project_id}/property_definitions/{id}/
property_definitions_partial_update 2 params body → 200
DELETE
/api/projects/{project_id}/property_definitions/{id}/
property_definitions_destroy 2 params → 204
POST
/api/projects/{project_id}/property_definitions/bulk_update_tags/
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…
property_definitions_bulk_update_tags_create 1 param body → 200
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 eventname
property_definitions_seen_together_retrieve 1 param → 200
GET
/api/projects/{project_id}/session_recordings/{recording_id}/sharing/
session_recordings_sharing_list 2 params → 200
POST
/api/projects/{project_id}/session_recordings/{recording_id}/sharing/passwords/
Create a new password for the sharing configuration.
session_recordings_sharing_passwords_create 2 params body → 200
DELETE
/api/projects/{project_id}/session_recordings/{recording_id}/sharing/passwords/{password_id}/
Delete a password from the sharing configuration.
session_recordings_sharing_passwords_destroy 3 params → 204
POST
/api/projects/{project_id}/session_recordings/{recording_id}/sharing/refresh/
session_recordings_sharing_refresh_create 2 params body → 200
GET
/api/projects/{project_id}/subscriptions/
subscriptions_list 10 params → 200
POST
/api/projects/{project_id}/subscriptions/
subscriptions_create 1 param body → 201
GET
/api/projects/{project_id}/subscriptions/{id}/
subscriptions_retrieve 2 params → 200
PUT
/api/projects/{project_id}/subscriptions/{id}/
subscriptions_update 2 params body → 200
PATCH
/api/projects/{project_id}/subscriptions/{id}/
subscriptions_partial_update 2 params body → 200
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
subscriptions_destroy 2 params → 405
POST
/api/projects/{project_id}/subscriptions/{id}/test-delivery/
subscriptions_test_delivery_create 2 params → 202
GET
/api/users/
users_list 4 params → 200
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.
users_retrieve 1 param → 200
PUT
/api/users/{uuid}/
Replace the authenticated user's profile and settings. Pass @me as the UUID to update the authenticated user. Prefer the PATCH endpoint for partial updates — PUT requires every writable field to be p…
users_update 1 param body → 200
PATCH
/api/users/{uuid}/
Update one or more of the authenticated user's profile fields or settings.
users_partial_update 1 param body → 200
DELETE
/api/users/{uuid}/
users_destroy 1 param → 204
GET
/api/users/{uuid}/github_login/
users_github_login_retrieve 1 param → 200
GET
/api/users/{uuid}/hedgehog_config/
users_hedgehog_config_retrieve 1 param → 200
PATCH
/api/users/{uuid}/hedgehog_config/
users_hedgehog_config_partial_update 1 param body → 200
GET
/api/users/{uuid}/integrations/
List personal GitHub integrations
users_integrations_list 3 params → 200
DELETE
/api/users/{uuid}/integrations/github/{installation_id}/
Disconnect a personal GitHub integration
users_integrations_github_destroy 2 params → 204
GET
/api/users/{uuid}/integrations/github/{installation_id}/branches/
List branches for a personal GitHub installation repository
users_integrations_github_branches_retrieve 6 params → 200
GET
/api/users/{uuid}/integrations/github/{installation_id}/repos/
List repositories for a personal GitHub installation
users_integrations_github_repos_retrieve 5 params → 200
POST
/api/users/{uuid}/integrations/github/{installation_id}/repos/refresh/
Refresh repositories for a personal GitHub installation
users_integrations_github_repos_refresh_create 2 params → 200
POST
/api/users/{uuid}/integrations/github/start/
Start GitHub personal integration linking
users_integrations_github_start_create 1 param body → 200
POST
/api/users/{uuid}/scene_personalisation/
users_scene_personalisation_create 1 param body → 200
GET
/api/users/{uuid}/start_2fa_setup/
users_start_2fa_setup_retrieve 1 param → 200
POST
/api/users/{uuid}/two_factor_backup_codes/
Generate new backup codes, invalidating any existing ones
users_two_factor_backup_codes_create 1 param body → 200
POST
/api/users/{uuid}/two_factor_disable/
Disable 2FA and remove all related devices
users_two_factor_disable_create 1 param body → 200
GET
/api/users/{uuid}/two_factor_start_setup/
users_two_factor_start_setup_retrieve 1 param → 200
GET
/api/users/{uuid}/two_factor_status/
Get current 2FA status including backup codes if enabled
users_two_factor_status_retrieve 1 param → 200
POST
/api/users/{uuid}/two_factor_validate/
users_two_factor_validate_create 1 param body → 200
POST
/api/users/{uuid}/validate_2fa/
users_validate_2fa_create 1 param body → 200
PATCH
/api/users/cancel_email_change_request/
users_cancel_email_change_request_partial_update body → 200
POST
/api/users/request_email_verification/
users_request_email_verification_create body → 200
POST
/api/users/verify_email/
users_verify_email_create body → 200

Schemas 137

The contract defines 137 schemas that model the data the API accepts and returns. The most detailed are PatchedProjectBackwardCompat (69 properties), ProjectBackwardCompat (69 properties), User (40 properties), PatchedUser (40 properties). Each schema is shown below with its type and property counts.

OrganizationMembershipLevelEnum
integer
1 - member 8 - administrator 15 - owner
EventDefinitionRecord
object
Serializer mixin that handles tags for objects.
14 properties 8 required
Cohort
object
22 properties 12 required
PatchedComment
object
13 properties
EnterprisePropertyDefinition
object
Serializer mixin that handles tags for objects.
13 properties 8 required
CohortTypeEnum
string
static - static personproperty - personproperty behavioral - behavioral realtime - realtime analytical - analytical
PatchedSubscription
object
Standard Subscription serializer.
25 properties
CreateGroup
object
3 properties 2 required
CreateLegalDocument
object
Input serializer for POST. Mirrors the submittable fields on the model plus cross-field rules (BAA addon, DPA mode, uniqueness). The view supplies the organiza…
4 properties 4 required
User
object
40 properties 22 required
GitHubRepo
object
3 properties 3 required
ActionEnum
string
add - add remove - remove set - set
PatchedAddPersonsToStaticCohortRequest
object
1 property
Dashboard
object
Serializer mixin that handles tags for objects.
31 properties 16 required
EnforcementModeEnum
string
allow - Allow reject - Reject
PaginatedCohortList
object
4 properties 2 required
OrganizationBasic
object
Serializer for Organization model with minimal attributes to speeed up loading and transfer times. Also used for nested serializers.
9 properties 5 required
GitHubBranchesResponse
object
3 properties 2 required
DashboardTemplateScopeEnum
string
team - Only team global - Global featureflag - Feature Flag
CopyDashboardTileRequest
object
2 properties 2 required
PaginatedLegalDocumentDTOList
object
4 properties 2 required
CohortPersonResultTypeEnum
string
person - person
PatchedCohort
object
22 properties
PaginatedUserGitHubIntegrationListResponseList
object
4 properties 2 required
PaginatedEnterprisePropertyDefinitionList
object
4 properties 2 required
GitHubReposResponse
object
2 properties 2 required
UserBasic
object
9 properties 4 required
OrganizationDomain
object
15 properties 9 required
UserGitHubLinkStartRequest
object
2 properties
EventPropFilterTypeEnum
string
OrganizationOAuthApplication
object
Serializer for organization-scoped OAuth applications (read-only).
7 properties 4 required
BusinessModelEnum
string
b2b - B2B b2c - B2C other - Other
PaginatedDashboardTemplateList
object
4 properties 2 required
Annotation
object
15 properties 8 required
PaginatedCommentList
object
3 properties 1 required
PatchedOrganizationMember
object
8 properties
PaginatedExportedAssetList
object
4 properties 2 required
PropertyGroupOperator
string
NullEnum
RunInsightsResponse
object
1 property 1 required
PropertyDefinitionTypeEnum
string
DateTime - DateTime String - String Numeric - Numeric Boolean - Boolean Duration - Duration
ExportFormatEnum
string
image/png - image/png application/pdf - application/pdf text/csv - text/csv application/vnd.openxmlformats-officedocument.spreadsheetml.sheet - application/vnd…
CopyDashboardTemplate
object
1 property 1 required
PaginatedProjectBackwardCompatBasicList
object
4 properties 2 required
BulkUpdateTagsResponse
object
2 properties 2 required
LegalDocumentDTO
object
Output serializer — what the API returns for every row.
7 properties 7 required
ToolbarModeEnum
string
disabled - disabled toolbar - toolbar
PatchedRole
object
6 properties
WeekStartDayEnum
integer
0 - Sunday 1 - Monday
TargetTypeEnum
string
email - Email slack - Slack webhook - Webhook
SubscriptionFrequencyEnum
string
daily - Daily weekly - Weekly monthly - Monthly yearly - Yearly
PatchedEnterprisePropertyDefinition
object
Serializer mixin that handles tags for objects.
13 properties
OrganizationMember
object
8 properties 7 required
PendingInvite
object
Shape of each item in UserSerializer.pendinginvites.
5 properties 5 required
SharePassword
object
5 properties 4 required
PatchedDashboard
object
Serializer mixin that handles tags for objects.
31 properties
ProjectBackwardCompat
object
Like ProjectBasicSerializer, but also works as a drop-in replacement for TeamBasicSerializer by way of passthrough fields. This allows the meaning of Team to c…
69 properties 17 required
Subscription
object
Standard Subscription serializer.
25 properties 11 required
PromotedPropertiesResponse
object
1 property 1 required
InsightResult
object
InsightSerializer restricted to identifiers + result only.
5 properties 5 required
PaginatedOrganizationInviteList
object
4 properties 2 required
ReorderTilesRequest
object
1 property 1 required
Role
object
6 properties 6 required
CreationModeEnum
string
default - Default template - Template duplicate - Duplicate unlisted - Unlisted (product-embedded)
DocumentTypeEnum
string
BAA - BAA DPA - DPA
BlankEnum
PaginatedOrganizationDomainList
object
4 properties 2 required
RoleAtOrganizationEnum
string
engineering - Engineering data - Data product - Product Management founder - Founder leadership - Leadership marketing - Marketing sales - Sales / Success othe…
BehavioralFilter
object
21 properties 4 required
UserGitHubLinkStartResponse
object
2 properties 2 required
ProjectSecretAPIKey
object
9 properties 9 required
ExportedAsset
object
Standard ExportedAsset serializer that doesn't return content.
10 properties 7 required
EffectivePrivilegeLevelEnum
integer
PatchedProjectSecretAPIKey
object
9 properties
UserGitHubAccount
object
2 properties
SubscriptionDelivery
object
17 properties 17 required
PatchedFileSystem
object
10 properties
BulkUpdateTagsError
object
2 properties 2 required
PaginatedDashboardBasicList
object
4 properties 2 required
UserGitHubIntegrationItem
object
7 properties 5 required
Comment
object
13 properties 5 required
EnterpriseEventDefinition
object
Serializer mixin that handles tags for objects.
24 properties 15 required
PatchedOrganizationDomain
object
15 properties
LegalDocumentCreator
object
2 properties 2 required
TeamBasic
object
Serializer for Team model with minimal attributes to speeed up loading and transfer times. Also used for nested serializers.
12 properties 12 required
CohortPersonResult
object
11 properties 11 required
BulkUpdateTagsRequest
object
3 properties 3 required
EffectiveMembershipLevelEnum
integer
AnnotationScopeEnum
string
dashboarditem - insight dashboard - dashboard project - project organization - organization recording - recording
PaginatedAnnotationList
object
4 properties 2 required
RestrictionLevelEnum
integer
21 - Everyone in the project can edit 37 - Only those invited to this dashboard can edit
DefaultExperimentStatsMethodEnum
string
bayesian - Bayesian frequentist - Frequentist
PatchedEnterpriseEventDefinition
object
Serializer mixin that handles tags for objects.
24 properties
ThemeModeEnum
string
light - Light dark - Dark system - System
TimezoneEnum
string
Africa/Abidjan - Africa/Abidjan Africa/Accra - Africa/Accra Africa/AddisAbaba - Africa/AddisAbaba Africa/Algiers - Africa/Algiers Africa/Asmara - Africa/Asmara…
DashboardBasic
object
Serializer mixin that handles tags for objects.
19 properties 18 required
SubscriptionDeliveryStatusEnum
string
starting - Starting completed - Completed failed - Failed skipped - Skipped
GitHubReposRefreshResponse
object
1 property 1 required
ProjectBackwardCompatBasic
object
Like ProjectBasicSerializer, but also works as a drop-in replacement for TeamBasicSerializer by way of passthrough fields. This allows the meaning of Team to c…
11 properties 11 required
PaginatedFileSystemList
object
4 properties 2 required
CohortFilter
object
7 properties 3 required
CohortPersonsResponse
object
3 properties 3 required
AvailableSetupTaskIdsEnum
string
ingestfirstevent - ingestfirstevent setupreverseproxy - setupreverseproxy createfirstinsight - createfirstinsight createfirstdashboard - createfirstdashboard t…
DashboardTileResult
object
DashboardTileSerializer restricted to tile id + insight result fields.
2 properties 1 required
ByweekdayEnum
string
monday - Monday tuesday - Tuesday wednesday - Wednesday thursday - Thursday friday - Friday saturday - Saturday sunday - Sunday
CreationTypeEnum
string
USR - user GIT - GitHub
PaginatedUserList
object
4 properties 2 required
ShortcutPositionEnum
string
above - Above below - Below hidden - Hidden
SessionRecordingRetentionPeriodEnum
string
30d - 30 Days 90d - 90 Days 1y - 1 Year 5y - 5 Years
PatchedRemovePersonRequest
object
1 property
PatchedUser
object
40 properties
FileSystem
object
10 properties 5 required
CohortFilterGroup
object
AND/OR group containing cohort filters. Named to avoid collision with analytics Group model.
2 properties 2 required
HogQLFilter
object
3 properties 2 required
PluginsAccessLevelEnum
integer
0 - none 3 - config 6 - install 9 - root
EventPropFilter
object
4 properties 3 required
DashboardTemplate
object
15 properties 4 required
PaginatedGroupList
object
3 properties 1 required
PaginatedOrganizationOAuthApplicationList
object
4 properties 2 required
Group
object
4 properties 3 required
UserGitHubIntegrationListResponse
object
1 property 1 required
CohortFilters
object
1 property 1 required
SharingConfiguration
object
6 properties 3 required
PatchedProjectBackwardCompat
object
Like ProjectBasicSerializer, but also works as a drop-in replacement for TeamBasicSerializer by way of passthrough fields. This allows the meaning of Team to c…
69 properties
PaginatedProjectSecretAPIKeyList
object
4 properties 2 required
ScenePersonalisationBasic
object
2 properties 1 required
PaginatedSubscriptionList
object
4 properties 2 required
BulkUpdateTagsItem
object
2 properties 2 required
PaginatedRoleList
object
4 properties 2 required
PatchedAnnotation
object
15 properties
PaginatedEnterpriseEventDefinitionList
object
4 properties 2 required
Organization
object
26 properties 17 required
PaginatedSubscriptionDeliveryList
object
3 properties 1 required
OrganizationInvite
object
13 properties 7 required
PatchedDashboardTemplate
object
15 properties
PaginatedOrganizationMemberList
object
4 properties 2 required
PersonFilter
object
8 properties 2 required

Specification

The full machine-readable OpenAPI contract behind this narrative.

Source

posthog-core-api-openapi.yml Raw ↑

Other APIs PostHog publishes across the network.

PostHog Capture API
PostHog Query API
PostHog Persons API
PostHog Feature Flags API
PostHog Experiments API
PostHog Insights API
PostHog Cohorts API
PostHog Annotations API
PostHog actions API
PostHog activity_log API
PostHog activity_logs API
PostHog advanced_activity_logs API
Where this information came from

This is an independent, third-party profile of PostHog core API, published by API Evangelist. We do not operate, host, resell, or support these APIs, and we are not affiliated with or endorsed by the company unless stated above. Everything here is built from publicly available information — the company's own site, developer portal, documentation, public repositories, and the specifications it publishes for public use. Nothing is obtained by breaching a system, defeating an access control, or using credentials.

The Kin Score and Agent Readiness rating are independently calculated assessments of a company's public API artifacts, scored against a published rubric. They are not certifications, endorsements, security assessments, or audits.

Corrections, re-scores, and removal are free — no partnership or purchase required, and you do not need to justify the request. A removed company is recorded as unrated, never scored zero for having asked. Acknowledgement within one business day; removal within two.

info@apievangelist.com · Read the full data-sourcing policy →
On a security or compliance team? Put security in the subject line and you will get a person, not a form — we will tell you exactly which public URLs this profile was built from.