You can also use the query endpoint to retrieve persons. It enables you to use SQL to query the persons table.
Persons
For instructions on how to authenticate to use this endpoint, see API overview.
This endpoint is meant for reading and deleting persons. To create or update persons, we recommend using the capture API, the $set and $unset properties, or one of our SDKs.
Endpoints
List all persons
Required API key scopes
person:readPath parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- distinct_idstring
Filter list by distinct id.
- emailstring
Filter persons by email (exact match)
- formatstringOne of:
"csv""json" - limitinteger
Number of results to return per page.
- offsetinteger
The initial index from which to return the results.
- propertiesarray
Filter Persons by person properties.
- searchstring
Search persons, either by email (full text search) or distinct_id (exact match).
Response
Request
GET /api /projects /:project_id /personsexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/
Response
Status 200
{"next": "https://app.posthog.com/api/projects/{project_id}/accounts/?offset=400&limit=100","previous": "https://app.posthog.com/api/projects/{project_id}/accounts/?offset=400&limit=100","count": 400,"results": [{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}]}
Retrieve persons
Required API key scopes
person:readPath parameters
- idinteger
A unique integer value identifying this person.
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /:idexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/:id/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Update persons
It is better to use the capture API to update person properties.
This endpoint functionally captures a $set event with a $set property key along with the property values you want to update.
Required API key scopes
person:writePath parameters
- idinteger
A unique integer value identifying this person.
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Request parameters
- properties
Response
Request
PATCH /api /projects /:project_id /persons /:idexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl -X PATCH \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/:id/\-d name="string"
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Delete persons
This is the main way to delete data in PostHog.
To learn more, see our data deletion docs.
Required API key scopes
person:writePath parameters
- idinteger
A unique integer value identifying this person.
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- delete_eventsboolean
If true, a task to delete all events associated with this person will be created and queued. The task does not run immediately and instead is batched together and at 5AM UTC every Sunday (controlled by environment variable CLEAR_CLICKHOUSE_REMOVED_DATA_SCHEDULE_CRON)
- formatstringOne of:
"csv""json"
Request
DELETE /api /projects /:project_id /persons /:idexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl -X DELETE \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/:id/
Response
Status 204 No response body
Retrieve persons activity retrieve
Required API key scopes
activity_log:readPath parameters
- idinteger
A unique integer value identifying this person.
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /:id /activityexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/:id/activity/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Create persons delete property
It is better to use the capture API to change person properties.
This endpoint functionally captures a $delete_person_property event with an $unset property key along with the property value you want to delete.
Path parameters
- idinteger
A unique integer value identifying this person.
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- $unsetstring
Specify the property key to delete
- formatstringOne of:
"csv""json"
Request parameters
- properties
Response
Request
POST /api /projects /:project_id /persons /:id /delete_propertyexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl-H 'Content-Type: application/json'\-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/:id/delete_property/\-d name="string"
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Retrieve persons properties timeline
Path parameters
- idinteger
A unique integer value identifying this person.
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /:id /properties_timelineexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/:id/properties_timeline/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Create persons split
Path parameters
- idinteger
A unique integer value identifying this person.
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Request parameters
- properties
Response
Request
POST /api /projects /:project_id /persons /:id /splitexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl-H 'Content-Type: application/json'\-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/:id/split/\-d name="string"
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Create persons update property
It is better to use the capture API to update person properties.
This endpoint functionally captures a $set event with a $set property key along with the property value you want to update.
Path parameters
- idinteger
A unique integer value identifying this person.
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json" - keystring
Specify the property key
- value
Specify the property value
Request parameters
- properties
Response
Request
POST /api /projects /:project_id /persons /:id /update_propertyexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl-H 'Content-Type: application/json'\-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/:id/update_property/\-d name="string"
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Retrieve persons activity
Path parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /activityexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/activity/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Retrieve persons cohorts
Required API key scopes
person:readcohort:readPath parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /cohortsexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/cohorts/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Retrieve persons funnel
Path parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /funnelexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/funnel/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Create persons funnel
Path parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Request parameters
- properties
Response
Request
POST /api /projects /:project_id /persons /funnelexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl-H 'Content-Type: application/json'\-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/funnel/\-d name="string"
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Retrieve persons funnel correlation
Path parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /funnel /correlationexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/funnel/correlation/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Create persons funnel correlation
Path parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Request parameters
- properties
Response
Request
POST /api /projects /:project_id /persons /funnel /correlationexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl-H 'Content-Type: application/json'\-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/funnel/correlation/\-d name="string"
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Retrieve persons lifecycle
Path parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /lifecycleexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/lifecycle/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Retrieve persons path
Path parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /pathexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/path/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Create persons path
Path parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Request parameters
- properties
Response
Request
POST /api /projects /:project_id /persons /pathexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl-H 'Content-Type: application/json'\-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/path/\-d name="string"
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Retrieve persons retention
Path parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /retentionexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/retention/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Retrieve persons stickiness
Path parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /stickinessexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/stickiness/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Retrieve persons trends
Path parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /trendsexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/trends/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}
Retrieve persons values
Path parameters
- project_idstring
Project ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/.
Query parameters
- formatstringOne of:
"csv""json"
Response
Request
GET /api /projects /:project_id /persons /valuesexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/persons/values/
Response
Status 200
{"id": 0,"name": "string","distinct_ids": ["string"],"properties": null,"created_at": "2019-08-24T14:15:22Z","uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f"}