Feature
For instructions on how to authenticate to use this endpoint, see API overview.
Create, read, update and delete feature flags. See docs for more information on feature flags.
If you're looking to use feature flags on your application, you can either use our JavaScript Library or our dedicated endpoint to check if feature flags are enabled for a given user.
Endpoints
List all feature flags
Path Parameters
- project_idstring
Query Parameters
- limitinteger
- offsetinteger
Response
Request
GET
/api /projects /:project_id /feature_flags
export POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/feature_flags/
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,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true}]}
Create feature flags
Path Parameters
- project_idstring
Request Parameters
- namestring
contains the description for the flag (field name
name
is kept for backwards-compatibility) - keystring
- filtersobject
- deletedboolean
- activeboolean
- created_atstring
- ensure_experience_continuityboolean
- rollback_conditionsobject
- performed_rollbackboolean
- tagsarray
- analytics_dashboardsarray
- has_enriched_analyticsboolean
Response
Request
POST
/api /projects /:project_id /feature_flags
export 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/feature_flags/\-d key="string"
Response
{"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true}
List all feature flags role access
Path Parameters
- parent_lookup_feature_flag_idstring
- project_idstring
Query Parameters
- limitinteger
- offsetinteger
Response
Request
GET
/api /projects /:project_id /feature_flags /:parent_lookup_feature_flag_id /role_access
export POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/feature_flags/:parent_lookup_feature_flag_id/role_access/
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,"feature_flag": {"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true},"role": {"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08","name": "string","feature_flags_access_level": 21,"created_at": "2019-08-24T14:15:22Z","created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"members": "string","associated_flags": "string"},"role_id": "ac4e70c8-d5be-48af-93eb-760f58fc91a9","added_at": "2019-08-24T14:15:22Z","updated_at": "2019-08-24T14:15:22Z"}]}
Create feature flags role access
Path Parameters
- parent_lookup_feature_flag_idstring
- project_idstring
Request Parameters
- role_idstring
Response
Request
POST
/api /projects /:project_id /feature_flags /:parent_lookup_feature_flag_id /role_access
export 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/feature_flags/:parent_lookup_feature_flag_id/role_access/\-d role_id="string"
Response
{"id": 0,"feature_flag": {"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true},"role": {"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08","name": "string","feature_flags_access_level": 21,"created_at": "2019-08-24T14:15:22Z","created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"members": "string","associated_flags": "string"},"role_id": "ac4e70c8-d5be-48af-93eb-760f58fc91a9","added_at": "2019-08-24T14:15:22Z","updated_at": "2019-08-24T14:15:22Z"}
Retrieve feature flags role access
Path Parameters
- idinteger
- parent_lookup_feature_flag_idstring
- project_idstring
Response
Request
GET
/api /projects /:project_id /feature_flags /:parent_lookup_feature_flag_id /role_access /:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/feature_flags/:parent_lookup_feature_flag_id/role_access/:id/
Response
{"id": 0,"feature_flag": {"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true},"role": {"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08","name": "string","feature_flags_access_level": 21,"created_at": "2019-08-24T14:15:22Z","created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"members": "string","associated_flags": "string"},"role_id": "ac4e70c8-d5be-48af-93eb-760f58fc91a9","added_at": "2019-08-24T14:15:22Z","updated_at": "2019-08-24T14:15:22Z"}
Delete feature flags role access
Path Parameters
- idinteger
- parent_lookup_feature_flag_idstring
- project_idstring
Request
DELETE
/api /projects /:project_id /feature_flags /:parent_lookup_feature_flag_id /role_access /:id
export 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/feature_flags/:parent_lookup_feature_flag_id/role_access/:id/
Response
No responseRetrieve feature flags
Path Parameters
- idinteger
- project_idstring
Response
Request
GET
/api /projects /:project_id /feature_flags /:id
export POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/feature_flags/:id/
Response
{"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true}
Update feature flags
Path Parameters
- idinteger
- project_idstring
Request Parameters
- namestring
contains the description for the flag (field name
name
is kept for backwards-compatibility) - keystring
- filtersobject
- deletedboolean
- activeboolean
- created_atstring
- ensure_experience_continuityboolean
- rollback_conditionsobject
- performed_rollbackboolean
- tagsarray
- analytics_dashboardsarray
- has_enriched_analyticsboolean
Response
Request
PATCH
/api /projects /:project_id /feature_flags /:id
export 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/feature_flags/:id/\-d name="string"
Response
{"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true}
Delete feature flags
Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true
Path Parameters
- idinteger
- project_idstring
Request
DELETE
/api /projects /:project_id /feature_flags /:id
export 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/feature_flags/:id/
Response
No responseRetrieve feature flags activity retrieve
Path Parameters
- idinteger
- project_idstring
Response
Request
GET
/api /projects /:project_id /feature_flags /:id /activity
export POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/feature_flags/:id/activity/
Response
{"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true}
Create feature flags dashboard
Path Parameters
- idinteger
- project_idstring
Request Parameters
- namestring
contains the description for the flag (field name
name
is kept for backwards-compatibility) - keystring
- filtersobject
- deletedboolean
- activeboolean
- created_atstring
- ensure_experience_continuityboolean
- rollback_conditionsobject
- performed_rollbackboolean
- tagsarray
- analytics_dashboardsarray
- has_enriched_analyticsboolean
Response
Request
POST
/api /projects /:project_id /feature_flags /:id /dashboard
export 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/feature_flags/:id/dashboard/\-d key="string"
Response
{"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true}
Retrieve feature flags activity
Path Parameters
- project_idstring
Response
Request
GET
/api /projects /:project_id /feature_flags /activity
export POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/feature_flags/activity/
Response
{"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true}
Retrieve feature flags evaluation reasons
Path Parameters
- project_idstring
Response
Request
GET
/api /projects /:project_id /feature_flags /evaluation_reasons
export POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/feature_flags/evaluation_reasons/
Response
{"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true}
Retrieve feature flags local evaluation
Path Parameters
- project_idstring
Response
Request
GET
/api /projects /:project_id /feature_flags /local_evaluation
export POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/feature_flags/local_evaluation/
Response
{"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true}
Retrieve feature flags my flags
Path Parameters
- project_idstring
Response
Request
GET
/api /projects /:project_id /feature_flags /my_flags
export POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \https://app.posthog.com/api/projects/:project_id/feature_flags/my_flags/
Response
{"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true}
Create feature flags user blast radius
Path Parameters
- project_idstring
Request Parameters
- namestring
contains the description for the flag (field name
name
is kept for backwards-compatibility) - keystring
- filtersobject
- deletedboolean
- activeboolean
- created_atstring
- ensure_experience_continuityboolean
- rollback_conditionsobject
- performed_rollbackboolean
- tagsarray
- analytics_dashboardsarray
- has_enriched_analyticsboolean
Response
Request
POST
/api /projects /:project_id /feature_flags /user_blast_radius
export 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/feature_flags/user_blast_radius/\-d key="string"
Response
{"id": 0,"name": "string","key": "string","filters": {"property1": null,"property2": null},"deleted": true,"active": true,"created_by": {"id": 0,"uuid": "095be615-a8ad-4c33-8e9c-c7612fbf6c9f","distinct_id": "string","first_name": "string","email": "user@example.com","is_email_verified": true},"created_at": "2019-08-24T14:15:22Z","is_simple_flag": true,"rollout_percentage": 0,"ensure_experience_continuity": true,"experiment_set": [0],"features": {"property1": null,"property2": null},"rollback_conditions": {"property1": null,"property2": null},"performed_rollback": true,"can_edit": true,"tags": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true}