Access the PostHog API with managed authentication. Query product analytics events with HogQL, manage feature flags, analyze user behavior, view session recordings, and run A/B experiments.
Reference
Get Current Organization
GET /posthog/api/organizations/@current/List Projects
GET /posthog/api/projects/Response:
{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"id": 136209,
"uuid": "019583c6-377c-0000-e55c-8696cbc33595",
"organization": "019583c6-3635-0000-5798-c18f20963b3b",
"api_token": "phc_XXX",
"name": "Default project",
"timezone": "UTC"
}
]
}Get Current Project
GET /posthog/api/projects/@current/Get Current User
GET /posthog/api/users/@me/Run HogQL Query
POST /posthog/api/projects/{project_id}/query/
Content-Type: application/json
{
"query": {
"kind": "HogQLQuery",
"query": "SELECT event, count() FROM events GROUP BY event ORDER BY count() DESC LIMIT 10"
}
}Response:
{
"columns": ["event", "count()"],
"results": [
["$pageview", 140504],
["$autocapture", 108691],
["$identify", 5455]
],
"types": [
["event", "String"],
["count()", "UInt64"]
]
}List Persons
GET /posthog/api/projects/{project_id}/persons/?limit=10Response:
{
"results": [
{
"id": "5d79eecb-93e6-5c8b-90f9-8510ba4040b8",
"uuid": "5d79eecb-93e6-5c8b-90f9-8510ba4040b8",
"name": "user@example.com",
"is_identified": true,
"distinct_ids": ["user-uuid", "anon-uuid"],
"properties": {
"email": "user@example.com",
"name": "John Doe"
}
}
],
"next": "https://us.posthog.com/api/projects/{project_id}/persons/?limit=10&offset=10"
}Get Person
GET /posthog/api/projects/{project_id}/persons/{person_uuid}/List Dashboards
GET /posthog/api/projects/{project_id}/dashboards/Get Dashboard
GET /posthog/api/projects/{project_id}/dashboards/{dashboard_id}/Create Dashboard
POST /posthog/api/projects/{project_id}/dashboards/
Content-Type: application/json
{
"name": "My Dashboard",
"description": "Analytics overview"
}Update Dashboard
PATCH /posthog/api/projects/{project_id}/dashboards/{dashboard_id}/
Content-Type: application/json
{
"name": "Updated Dashboard Name"
}List Insights
GET /posthog/api/projects/{project_id}/insights/?limit=10Get Insight
GET /posthog/api/projects/{project_id}/insights/{insight_id}/Create Insight
POST /posthog/api/projects/{project_id}/insights/
Content-Type: application/json
{
"name": "Daily Active Users",
"query": {
"kind": "InsightVizNode",
"source": {
"kind": "TrendsQuery",
"series": [{"kind": "EventsNode", "event": "$pageview", "math": "dau"}],
"interval": "day",
"dateRange": {"date_from": "-30d"}
}
}
}List Feature Flags
GET /posthog/api/projects/{project_id}/feature_flags/Get Feature Flag
GET /posthog/api/projects/{project_id}/feature_flags/{flag_id}/Create Feature Flag
POST /posthog/api/projects/{project_id}/feature_flags/
Content-Type: application/json
{
"key": "my-feature-flag",
"name": "My Feature Flag",
"active": true,
"filters": {
"groups": [{"rollout_percentage": 100}]
}
}Update Feature Flag
PATCH /posthog/api/projects/{project_id}/feature_flags/{flag_id}/
Content-Type: application/json
{
"active": false
}Delete Feature Flag
Use soft delete by setting deleted: true:
PATCH /posthog/api/projects/{project_id}/feature_flags/{flag_id}/
Content-Type: application/json
{
"deleted": true
}List Cohorts
GET /posthog/api/projects/{project_id}/cohorts/Get Cohort
GET /posthog/api/projects/{project_id}/cohorts/{cohort_id}/Create Cohort
POST /posthog/api/projects/{project_id}/cohorts/
Content-Type: application/json
{
"name": "Active Users",
"groups": [
{
"properties": [
{"key": "$pageview", "type": "event", "value": "performed_event"}
]
}
]
}List Actions
GET /posthog/api/projects/{project_id}/actions/Create Action
POST /posthog/api/projects/{project_id}/actions/
Content-Type: application/json
{
"name": "Signed Up",
"steps": [{"event": "$identify"}]
}List Session Recordings
GET /posthog/api/projects/{project_id}/session_recordings/?limit=10Response:
{
"results": [
{
"id": "019c8795-79e3-7a05-ac56-597b102f1960",
"distinct_id": "user-uuid",
"recording_duration": 1807,
"start_time": "2026-02-22T23:00:46.389000Z",
"end_time": "2026-02-22T23:30:53.297000Z",
"click_count": 0,
"keypress_count": 0,
"start_url": "https://example.com/register"
}
],
"has_next": false
}Get Session Recording
GET /posthog/api/projects/{project_id}/session_recordings/{recording_id}/List Annotations
GET /posthog/api/projects/{project_id}/annotations/Create Annotation
POST /posthog/api/projects/{project_id}/annotations/
Content-Type: application/json
{
"content": "New feature launched",
"date_marker": "2026-02-23T00:00:00Z",
"scope": "project"
}List Surveys
GET /posthog/api/projects/{project_id}/surveys/Create Survey
POST /posthog/api/projects/{project_id}/surveys/
Content-Type: application/json
{
"name": "NPS Survey",
"type": "popover",
"questions": [
{
"type": "rating",
"question": "How likely are you to recommend us?"
}
]
}List Experiments
GET /posthog/api/projects/{project_id}/experiments/Create Experiment
POST /posthog/api/projects/{project_id}/experiments/
Content-Type: application/json
{
"name": "Button Color Test",
"feature_flag_key": "button-color-test"
}List Event Definitions
GET /posthog/api/projects/{project_id}/event_definitions/?limit=10List Property Definitions
GET /posthog/api/projects/{project_id}/property_definitions/?limit=10