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_idstringProject 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_idstringFilter list by distinct id. 
- emailstringFilter persons by email (exact match) 
- formatstringOne of:"csv""json"
- limitintegerNumber of results to return per page. 
- offsetintegerThe initial index from which to return the results. 
- propertiesarrayFilter Persons by person properties. 
- searchstringSearch persons, either by email (full text search) or distinct_id (exact match). 
Response
Request
GET 
Response
Status 200
Retrieve persons
Required API key scopes
person:readPath parameters
- idintegerA unique integer value identifying this person. 
- project_idstringProject 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 
Response
Status 200
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
- idintegerA unique integer value identifying this person. 
- project_idstringProject 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 
Response
Status 200
Delete persons
This is the main way to delete data in PostHog.
To learn more, see our data deletion docs.
Use this endpoint to delete individual persons. For bulk deletion, use the bulk_delete endpoint instead.
Required API key scopes
person:writePath parameters
- idintegerA unique integer value identifying this person. 
- project_idstringProject 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_eventsbooleanIf 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 
- formatstringOne of:"csv""json"
Request
DELETE 
Response
Status 204 No response body
Retrieve persons activity retrieve
Required API key scopes
activity_log:readPath parameters
- idintegerA unique integer value identifying this person. 
- project_idstringProject 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
GET 
Response
Status 200 No response body
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.
Required API key scopes
person:writePath parameters
- idintegerA unique integer value identifying this person. 
- project_idstringProject ID of the project you're trying to access. To find the ID of the project, make a call to /api/projects/. 
Query parameters
- $unsetstringSpecify the property key to delete 
- formatstringOne of:"csv""json"
Request parameters
- properties
Request
POST 
Response
Status 200 No response body
Retrieve persons properties timeline
Path parameters
- idintegerA unique integer value identifying this person. 
- project_idstringProject 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
GET 
Response
Status 200 No response body
Create persons split
Required API key scopes
person:writePath parameters
- idintegerA unique integer value identifying this person. 
- project_idstringProject 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
Request
POST 
Response
Status 200 No response body
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.
Required API key scopes
person:writePath parameters
- idintegerA unique integer value identifying this person. 
- project_idstringProject 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"
- keystringSpecify the property key 
- valueSpecify the property value 
Request parameters
- properties
Request
POST 
Response
Status 200 No response body
Retrieve persons activity
Required API key scopes
activity_log:readPath parameters
- project_idstringProject 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
GET 
Response
Status 200 No response body
Create persons bulk delete
This endpoint allows you to bulk delete persons, either by the PostHog person IDs or by distinct IDs. You can pass in a maximum of 100 IDs per call.
Required API key scopes
person:writePath parameters
- project_idstringProject 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_eventsbooleanIf 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 
- distinct_idsobjectA list of distinct IDs, up to 100 of them. We'll delete all persons associated with those distinct IDs. 
- formatstringOne of:"csv""json"
- idsobjectA list of PostHog person IDs, up to 100 of them. We'll delete all the persons listed. 
Request parameters
- properties
Request
POST 
Response
Status 200 No response body
Retrieve persons cohorts
Required API key scopes
person:readcohort:readPath parameters
- project_idstringProject 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
GET 
Response
Status 200 No response body
Retrieve persons funnel
Path parameters
- project_idstringProject 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
GET 
Response
Status 200 No response body
Create persons funnel
Path parameters
- project_idstringProject 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
Request
POST 
Response
Status 200 No response body
Retrieve persons funnel correlation
Path parameters
- project_idstringProject 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
GET 
Response
Status 200 No response body
Create persons funnel correlation
Path parameters
- project_idstringProject 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
Request
POST 
Response
Status 200 No response body
Retrieve persons lifecycle
Path parameters
- project_idstringProject 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
GET 
Response
Status 200 No response body
Retrieve persons path
Path parameters
- project_idstringProject 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
GET 
Response
Status 200 No response body
Create persons path
Path parameters
- project_idstringProject 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
Request
POST 
Response
Status 200 No response body
Retrieve persons retention
Path parameters
- project_idstringProject 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
GET 
Response
Status 200 No response body
Retrieve persons stickiness
Path parameters
- project_idstringProject 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
GET 
Response
Status 200 No response body
Retrieve persons trends
Path parameters
- project_idstringProject 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
GET 
Response
Status 200 No response body
Retrieve persons values
Required API key scopes
person:readPath parameters
- project_idstringProject 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
GET