Replay

For instructions on how to authenticate to use this endpoint, see API overview.

Endpoints

GET
POST
GET
PATCH
DELETE
GET
POST
DELETE
GET
GET
PATCH
DELETE
POST
GET
POST
GET
PATCH

List all environments session recording playlists

Also available via the PostHog MCP server:

  • session-recording-playlists-listList 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 each phase is wrapped in a span and the input sizes are recorded as span attributes — a slow response on a team with many playlists then shows up as a wide span against a large db_count.

Required API key scopes

session_recording_playlist:read

Query parameters

  • created_by
    integer
  • limit
    integer
  • offset
    integer
  • short_id
    string

Response


Example request

GET /api/environments/:environment_id/session_recording_playlists
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_recording_playlists/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": 0,
"short_id": "string",
"name": "string",
"derived_name": "string",
"description": "string",
"pinned": true,
"created_at": "2019-08-24T14:15:22Z",
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"deleted": true,
"filters": null,
"last_modified_at": "2019-08-24T14:15:22Z",
"last_modified_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"recordings_counts": {
"property1": {
"property1": 0,
"property2": 0
},
"property2": {
"property1": 0,
"property2": 0
}
},
"type": "collection",
"is_synthetic": true,
"_create_in_folder": "string"
}
]
}

Create environments session recording playlists

Required API key scopes

session_recording_playlist:write

Request parameters

  • name
    stringnull
  • derived_name
    stringnull
  • description
    string
  • pinned
    boolean
  • deleted
    boolean
  • filters
  • type
  • _create_in_folder
    string

Response


Example request

POST /api/environments/:environment_id/session_recording_playlists
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_recording_playlists/\
-d name=["string","null"]

Example response

Status 201
RESPONSE
{
"id": 0,
"short_id": "string",
"name": "string",
"derived_name": "string",
"description": "string",
"pinned": true,
"created_at": "2019-08-24T14:15:22Z",
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"deleted": true,
"filters": null,
"last_modified_at": "2019-08-24T14:15:22Z",
"last_modified_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"recordings_counts": {
"property1": {
"property1": 0,
"property2": 0
},
"property2": {
"property1": 0,
"property2": 0
}
},
"type": "collection",
"is_synthetic": true,
"_create_in_folder": "string"
}

Retrieve environments session recording playlists

Required API key scopes

session_recording_playlist:read

Path parameters

  • short_id
    string

Response


Example request

GET /api/environments/:environment_id/session_recording_playlists/:short_id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_recording_playlists/:short_id/

Example response

Status 200
RESPONSE
{
"id": 0,
"short_id": "string",
"name": "string",
"derived_name": "string",
"description": "string",
"pinned": true,
"created_at": "2019-08-24T14:15:22Z",
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"deleted": true,
"filters": null,
"last_modified_at": "2019-08-24T14:15:22Z",
"last_modified_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"recordings_counts": {
"property1": {
"property1": 0,
"property2": 0
},
"property2": {
"property1": 0,
"property2": 0
}
},
"type": "collection",
"is_synthetic": true,
"_create_in_folder": "string"
}

Update environments session recording playlists

Required API key scopes

session_recording_playlist:write

Path parameters

  • short_id
    string

Request parameters

  • name
    stringnull
  • derived_name
    stringnull
  • description
    string
  • pinned
    boolean
  • deleted
    boolean
  • filters
  • type
  • _create_in_folder
    string

Response


Example request

PATCH /api/environments/:environment_id/session_recording_playlists/:short_id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X PATCH \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_recording_playlists/:short_id/\
-d name=["string","null"]

Example response

Status 200
RESPONSE
{
"id": 0,
"short_id": "string",
"name": "string",
"derived_name": "string",
"description": "string",
"pinned": true,
"created_at": "2019-08-24T14:15:22Z",
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"deleted": true,
"filters": null,
"last_modified_at": "2019-08-24T14:15:22Z",
"last_modified_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"recordings_counts": {
"property1": {
"property1": 0,
"property2": 0
},
"property2": {
"property1": 0,
"property2": 0
}
},
"type": "collection",
"is_synthetic": true,
"_create_in_folder": "string"
}

Delete environments session recording playlists

Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true

Required API key scopes

session_recording_playlist:write

Path parameters

  • short_id
    string

Example request

DELETE /api/environments/:environment_id/session_recording_playlists/:short_id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X DELETE \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_recording_playlists/:short_id/

Example response

Status 405 No response body

Retrieve environments session recording playlists recordings

Required API key scopes

session_recording_playlist:read

Path parameters

  • short_id
    string

Example request

GET /api/environments/:environment_id/session_recording_playlists/:short_id/recordings
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_recording_playlists/:short_id/recordings/

Example response

Status 200 No response body

Create environments session recording playlists recordings

Path parameters

  • session_recording_id
    string
  • short_id
    string

Request parameters

  • name
    stringnull
  • derived_name
    stringnull
  • description
    string
  • pinned
    boolean
  • deleted
    boolean
  • filters
  • type
  • _create_in_folder
    string

Example request

POST /api/environments/:environment_id/session_recording_playlists/:short_id/recordings/:session_recording_id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_recording_playlists/:short_id/recordings/:session_recording_id/\
-d name=["string","null"]

Example response

Status 200 No response body

Delete environments session recording playlists recordings

Path parameters

  • session_recording_id
    string
  • short_id
    string

Example request

DELETE /api/environments/:environment_id/session_recording_playlists/:short_id/recordings/:session_recording_id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X DELETE \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_recording_playlists/:short_id/recordings/:session_recording_id/

Example response

Status 204 No response body

List all environments session recordings

Required API key scopes

session_recording:read

Query parameters

  • limit
    integer
  • offset
    integer

Response


Example request

GET /api/environments/:environment_id/session_recordings
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_recordings/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": "string",
"distinct_id": "string",
"viewed": true,
"viewers": [
"string"
],
"recording_duration": 0,
"active_seconds": 0,
"inactive_seconds": 0,
"start_time": "2019-08-24T14:15:22Z",
"end_time": "2019-08-24T14:15:22Z",
"click_count": 0,
"keypress_count": 0,
"mouse_activity_count": 0,
"console_log_count": 0,
"console_warn_count": 0,
"console_error_count": 0,
"start_url": "string",
"person": {
"id": 0,
"name": "string",
"distinct_ids": [
"string"
],
"properties": null,
"created_at": "2019-08-24T14:15:22Z",
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"last_seen_at": "2019-08-24T14:15:22Z"
},
"retention_period_days": 0,
"expiry_time": "2019-08-24T14:15:22Z",
"recording_ttl": 0,
"snapshot_source": "string",
"snapshot_library": "string",
"ongoing": true,
"activity_score": 0,
"has_summary": true,
"summary_outcome": {
"description": "string",
"success": true
},
"external_references": [
{}
],
"matches_filters": true
}
]
}

Retrieve environments session recordings

Required API key scopes

session_recording:read

Path parameters

  • id
    string

Response


Example request

GET /api/environments/:environment_id/session_recordings/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_recordings/:id/

Example response

Status 200
RESPONSE
{
"id": "string",
"distinct_id": "string",
"viewed": true,
"viewers": [
"string"
],
"recording_duration": 0,
"active_seconds": 0,
"inactive_seconds": 0,
"start_time": "2019-08-24T14:15:22Z",
"end_time": "2019-08-24T14:15:22Z",
"click_count": 0,
"keypress_count": 0,
"mouse_activity_count": 0,
"console_log_count": 0,
"console_warn_count": 0,
"console_error_count": 0,
"start_url": "string",
"person": {
"id": 0,
"name": "string",
"distinct_ids": [
"string"
],
"properties": null,
"created_at": "2019-08-24T14:15:22Z",
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"last_seen_at": "2019-08-24T14:15:22Z"
},
"retention_period_days": 0,
"expiry_time": "2019-08-24T14:15:22Z",
"recording_ttl": 0,
"snapshot_source": "string",
"snapshot_library": "string",
"ongoing": true,
"activity_score": 0,
"has_summary": true,
"summary_outcome": {
"description": "string",
"success": true
},
"external_references": [
{}
],
"matches_filters": true
}

Update environments session recordings

Required API key scopes

session_recording:write

Path parameters

  • id
    string

Request parameters

  • person

Response


Example request

PATCH /api/environments/:environment_id/session_recordings/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X PATCH \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_recordings/:id/\
-d distinct_id=["string","null"]

Example response

Status 200
RESPONSE
{
"id": "string",
"distinct_id": "string",
"viewed": true,
"viewers": [
"string"
],
"recording_duration": 0,
"active_seconds": 0,
"inactive_seconds": 0,
"start_time": "2019-08-24T14:15:22Z",
"end_time": "2019-08-24T14:15:22Z",
"click_count": 0,
"keypress_count": 0,
"mouse_activity_count": 0,
"console_log_count": 0,
"console_warn_count": 0,
"console_error_count": 0,
"start_url": "string",
"person": {
"id": 0,
"name": "string",
"distinct_ids": [
"string"
],
"properties": null,
"created_at": "2019-08-24T14:15:22Z",
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"last_seen_at": "2019-08-24T14:15:22Z"
},
"retention_period_days": 0,
"expiry_time": "2019-08-24T14:15:22Z",
"recording_ttl": 0,
"snapshot_source": "string",
"snapshot_library": "string",
"ongoing": true,
"activity_score": 0,
"has_summary": true,
"summary_outcome": {
"description": "string",
"success": true
},
"external_references": [
{}
],
"matches_filters": true
}

Delete environments session recordings

Required API key scopes

session_recording:write

Path parameters

  • id
    string

Example request

DELETE /api/environments/:environment_id/session_recordings/:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X DELETE \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_recordings/:id/

Example response

Status 204 No response body

Create environments create session summaries

Generate AI individual summary for each session, without grouping.

Required API key scopes

session_recording:read

Request parameters

  • session_ids
    array
  • focus_area
    string

Response


Example request

POST /api/environments/:environment_id/session_summaries/create_session_summaries_individually
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/environments/:environment_id/session_summaries/create_session_summaries_individually/\
-d session_ids="array"

Example response

Status 200
RESPONSE
{
"session_ids": [
"string"
],
"focus_area": "string"
}

List all session recording playlists

Also available via the PostHog MCP server:

  • session-recording-playlists-listList 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 each phase is wrapped in a span and the input sizes are recorded as span attributes — a slow response on a team with many playlists then shows up as a wide span against a large db_count.

Required API key scopes

session_recording_playlist:read

Query parameters

  • created_by
    integer
  • limit
    integer
  • offset
    integer
  • short_id
    string

Response


Example request

GET /api/projects/:project_id/session_recording_playlists
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/session_recording_playlists/

Example response

Status 200
RESPONSE
{
"count": 123,
"next": "http://api.example.org/accounts/?offset=400&limit=100",
"previous": "http://api.example.org/accounts/?offset=200&limit=100",
"results": [
{
"id": 0,
"short_id": "string",
"name": "string",
"derived_name": "string",
"description": "string",
"pinned": true,
"created_at": "2019-08-24T14:15:22Z",
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"deleted": true,
"filters": null,
"last_modified_at": "2019-08-24T14:15:22Z",
"last_modified_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"recordings_counts": {
"property1": {
"property1": 0,
"property2": 0
},
"property2": {
"property1": 0,
"property2": 0
}
},
"type": "collection",
"is_synthetic": true,
"_create_in_folder": "string"
}
]
}

Create session recording playlists

Required API key scopes

session_recording_playlist:write

Request parameters

  • name
    stringnull
  • derived_name
    stringnull
  • description
    string
  • pinned
    boolean
  • deleted
    boolean
  • filters
  • type
  • _create_in_folder
    string

Response


Example request

POST /api/projects/:project_id/session_recording_playlists
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl
-H 'Content-Type: application/json'\
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/session_recording_playlists/\
-d name=["string","null"]

Example response

Status 201
RESPONSE
{
"id": 0,
"short_id": "string",
"name": "string",
"derived_name": "string",
"description": "string",
"pinned": true,
"created_at": "2019-08-24T14:15:22Z",
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"deleted": true,
"filters": null,
"last_modified_at": "2019-08-24T14:15:22Z",
"last_modified_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"recordings_counts": {
"property1": {
"property1": 0,
"property2": 0
},
"property2": {
"property1": 0,
"property2": 0
}
},
"type": "collection",
"is_synthetic": true,
"_create_in_folder": "string"
}

Retrieve session recording playlists

Required API key scopes

session_recording_playlist:read

Path parameters

  • short_id
    string

Response


Example request

GET /api/projects/:project_id/session_recording_playlists/:short_id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/session_recording_playlists/:short_id/

Example response

Status 200
RESPONSE
{
"id": 0,
"short_id": "string",
"name": "string",
"derived_name": "string",
"description": "string",
"pinned": true,
"created_at": "2019-08-24T14:15:22Z",
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"deleted": true,
"filters": null,
"last_modified_at": "2019-08-24T14:15:22Z",
"last_modified_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"recordings_counts": {
"property1": {
"property1": 0,
"property2": 0
},
"property2": {
"property1": 0,
"property2": 0
}
},
"type": "collection",
"is_synthetic": true,
"_create_in_folder": "string"
}

Update session recording playlists

Required API key scopes

session_recording_playlist:write

Path parameters

  • short_id
    string

Request parameters

  • name
    stringnull
  • derived_name
    stringnull
  • description
    string
  • pinned
    boolean
  • deleted
    boolean
  • filters
  • type
  • _create_in_folder
    string

Response


Example request

PATCH /api/projects/:project_id/session_recording_playlists/:short_id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]
curl -X PATCH \
-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \
<ph_app_host>/api/projects/:project_id/session_recording_playlists/:short_id/\
-d name=["string","null"]

Example response

Status 200
RESPONSE
{
"id": 0,
"short_id": "string",
"name": "string",
"derived_name": "string",
"description": "string",
"pinned": true,
"created_at": "2019-08-24T14:15:22Z",
"created_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"deleted": true,
"filters": null,
"last_modified_at": "2019-08-24T14:15:22Z",
"last_modified_by": {
"id": 0,
"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f",
"distinct_id": "string",
"first_name": "string",
"last_name": "string",
"email": "user@example.com",
"is_email_verified": true,
"hedgehog_config": {},
"role_at_organization": "engineering"
},
"recordings_counts": {
"property1": {
"property1": 0,
"property2": 0
},
"property2": {
"property1": 0,
"property2": 0
}
},
"type": "collection",
"is_synthetic": true,
"_create_in_folder": "string"
}

Community questions

Questions about this page? or post a community question.