This endpoint returns a list of feature flags and their details like name, key, variants, rollout_percentage, and more.
To evaluate and determine the value of flags for a given user, use the flags endpoint instead.
For instructions on how to authenticate to use this endpoint, see API overview.
GET | |
POST | |
GET | |
PATCH | |
DELETE | |
GET | |
POST | |
POST | |
POST | |
GET | |
POST | |
POST | |
POST | |
GET | |
GET | |
POST | |
POST | |
GET | |
GET |
Also available via the PostHog MCP server:
feature-flag-get-all— Get all feature flags
This endpoint returns a list of feature flags and their details like name, key, variants, rollout_percentage, and more.
To evaluate and determine the value of flags for a given user, use the flags endpoint instead.
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.
feature_flag:read"STALE""false""true" "false""true" "true" "all""client""server" "false""true" "boolean""experiment""multivariant""remote_config" GET /api /projects /:project_id /feature_flagsexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \<ph_app_host>/api/projects/:project_id/feature_flags/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.get("<ph_app_host>/api/projects/{project_id}/feature_flags/".format(project_id=project_id),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"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": {},"deleted": true,"active": true,"archived": true,"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"},"created_at": "2019-08-24T14:15:22Z","updated_at": "2019-08-24T14:15:22Z","version": 0,"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"},"ensure_experience_continuity": true,"experiment_set": [0],"experiment_set_metadata": [{"id": 0,"name": "string","is_running": true}],"surveys": {},"features": {},"can_edit": true,"tags": [null],"evaluation_contexts": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true,"user_access_level": "string","creation_context": "feature_flags","is_remote_configuration": true,"has_encrypted_payloads": true,"status": "string","evaluation_runtime": "server","bucketing_identifier": "distinct_id","last_called_at": "2019-08-24T14:15:22Z","_create_in_folder": "string","is_used_in_replay_settings": true,"is_eligible_for_experiment": true}]}
Also available via the PostHog MCP server:
create-feature-flag— Create feature flag
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.
feature_flag:writePOST /api /projects /:project_id /feature_flagsexport 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/feature_flags/\-d key="string"
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.post("<ph_app_host>/api/projects/{project_id}/feature_flags/".format(project_id=project_id),headers={"Authorization": "Bearer {}".format(api_key)},data={"key": "string"}).json()
{"id": 0,"name": "string","key": "string","filters": {},"deleted": true,"active": true,"archived": true,"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"},"created_at": "2019-08-24T14:15:22Z","updated_at": "2019-08-24T14:15:22Z","version": 0,"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"},"ensure_experience_continuity": true,"experiment_set": [0],"experiment_set_metadata": [{"id": 0,"name": "string","is_running": true}],"surveys": {},"features": {},"can_edit": true,"tags": [null],"evaluation_contexts": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true,"user_access_level": "string","creation_context": "feature_flags","is_remote_configuration": true,"has_encrypted_payloads": true,"status": "string","evaluation_runtime": "server","bucketing_identifier": "distinct_id","last_called_at": "2019-08-24T14:15:22Z","_create_in_folder": "string","is_used_in_replay_settings": true,"is_eligible_for_experiment": true}
Also available via the PostHog MCP server:
feature-flag-get-definition— Get feature flag definition
This endpoint returns a feature flag and its details like name, key, variants, rollout_percentage, and more.
To evaluate and determine the value of a flag for a given user, use the flags endpoint instead.
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.
feature_flag:readGET /api /projects /:project_id /feature_flags /:idexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \<ph_app_host>/api/projects/:project_id/feature_flags/:id/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.get("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"id": 0,"name": "string","key": "string","filters": {},"deleted": true,"active": true,"archived": true,"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"},"created_at": "2019-08-24T14:15:22Z","updated_at": "2019-08-24T14:15:22Z","version": 0,"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"},"ensure_experience_continuity": true,"experiment_set": [0],"experiment_set_metadata": [{"id": 0,"name": "string","is_running": true}],"surveys": {},"features": {},"can_edit": true,"tags": [null],"evaluation_contexts": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true,"user_access_level": "string","creation_context": "feature_flags","is_remote_configuration": true,"has_encrypted_payloads": true,"status": "string","evaluation_runtime": "server","bucketing_identifier": "distinct_id","last_called_at": "2019-08-24T14:15:22Z","_create_in_folder": "string","is_used_in_replay_settings": true,"is_eligible_for_experiment": true}
Also available via the PostHog MCP server:
update-feature-flag— Update feature flag
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.
feature_flag:writePATCH /api /projects /:project_id /feature_flags /:idexport 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/feature_flags/:id/\-d key="string"
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.patch("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},data={"key": "string"}).json()
{"id": 0,"name": "string","key": "string","filters": {},"deleted": true,"active": true,"archived": true,"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"},"created_at": "2019-08-24T14:15:22Z","updated_at": "2019-08-24T14:15:22Z","version": 0,"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"},"ensure_experience_continuity": true,"experiment_set": [0],"experiment_set_metadata": [{"id": 0,"name": "string","is_running": true}],"surveys": {},"features": {},"can_edit": true,"tags": [null],"evaluation_contexts": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true,"user_access_level": "string","creation_context": "feature_flags","is_remote_configuration": true,"has_encrypted_payloads": true,"status": "string","evaluation_runtime": "server","bucketing_identifier": "distinct_id","last_called_at": "2019-08-24T14:15:22Z","_create_in_folder": "string","is_used_in_replay_settings": true,"is_eligible_for_experiment": true}
Also available via the PostHog MCP server:
delete-feature-flag— Delete feature flag
Hard delete of this model is not allowed. Use a patch API call to set "deleted" to true
feature_flag:writeDELETE /api /projects /:project_id /feature_flags /:idexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl -X DELETE \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \<ph_app_host>/api/projects/:project_id/feature_flags/:id/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.delete("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},)
Also available via the PostHog MCP server:
feature-flags-activity-retrieve— Get feature flag activity log
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.
activity_log:read101GET /api /projects /:project_id /feature_flags /:id /activityexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \<ph_app_host>/api/projects/:project_id/feature_flags/:id/activity/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.get("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/activity/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"results": [{"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08","user": {},"activity": "string","scope": "string","item_id": "string","detail": {"id": "string","changes": [{"type": "string","action": "string","field": "string","before": null,"after": null}],"merge": {"type": "string","source": null,"target": null},"trigger": {"job_type": "string","job_id": "string","payload": null},"name": "string","short_id": "string","type": "string"},"created_at": "2019-08-24T14:15:22Z","is_system": true,"was_impersonated": true,"client": "string"}],"next": "http://example.com","previous": "http://example.com","total_count": 0}
Archive a feature flag, hiding it from the default flag list.
Sets archived to true. An archived flag must be disabled, so an enabled flag also gets
active set to false in the same write. Targeting, variants and payloads are left as
they are, and linked experiment and survey history is preserved. Archiving an enabled
flag is refused when other active flags depend on it. An already-archived flag is
returned unchanged.
feature_flag:writePOST /api /projects /:project_id /feature_flags /:id /archiveexport 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/feature_flags/:id/archive/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.post("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/archive/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"id": 0,"name": "string","key": "string","filters": {},"deleted": true,"active": true,"archived": true,"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"},"created_at": "2019-08-24T14:15:22Z","updated_at": "2019-08-24T14:15:22Z","version": 0,"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"},"ensure_experience_continuity": true,"experiment_set": [0],"experiment_set_metadata": [{"id": 0,"name": "string","is_running": true}],"surveys": {},"features": {},"can_edit": true,"tags": [null],"evaluation_contexts": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true,"user_access_level": "string","creation_context": "feature_flags","is_remote_configuration": true,"has_encrypted_payloads": true,"status": "string","evaluation_runtime": "server","bucketing_identifier": "distinct_id","last_called_at": "2019-08-24T14:15:22Z","_create_in_folder": "string","is_used_in_replay_settings": true,"is_eligible_for_experiment": true}
{"error": "string"}
{"error": "string"}
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.
0POST /api /projects /:project_id /feature_flags /:id /create_static_cohort_for_flagexport 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/feature_flags/:id/create_static_cohort_for_flag/\-d key="string"
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.post("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/create_static_cohort_for_flag/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},data={"key": "string"}).json()
Deprecated. Ensures a saved usage dashboard exists for a feature flag. This endpoint will be removed after September 25, 2026; usage charts remain available on the feature flag Usage tab.
POST /api /projects /:project_id /feature_flags /:id /dashboardexport 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/feature_flags/:id/dashboard/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.post("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/dashboard/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"success": true}
{"success": true,"error": "string"}
Get other active flags that depend on this flag.
feature_flag:readGET /api /projects /:project_id /feature_flags /:id /dependent_flagsexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \<ph_app_host>/api/projects/:project_id/feature_flags/:id/dependent_flags/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.get("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/dependent_flags/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"id": 0,"key": "string","name": "string"}
Disable a feature flag.
Sets active to false and changes nothing else. Targeting, variants, payloads, tags and
archived state are left as they are. Refused when other active flags depend on this one.
An already-disabled flag is returned unchanged.
A disabled flag stops evaluating for every consumer, including a linked experiment or a session replay setting. Read the full definition first to report that impact.
feature_flag:writePOST /api /projects /:project_id /feature_flags /:id /disableexport 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/feature_flags/:id/disable/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.post("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/disable/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"id": 0,"name": "string","key": "string","filters": {},"deleted": true,"active": true,"archived": true,"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"},"created_at": "2019-08-24T14:15:22Z","updated_at": "2019-08-24T14:15:22Z","version": 0,"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"},"ensure_experience_continuity": true,"experiment_set": [0],"experiment_set_metadata": [{"id": 0,"name": "string","is_running": true}],"surveys": {},"features": {},"can_edit": true,"tags": [null],"evaluation_contexts": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true,"user_access_level": "string","creation_context": "feature_flags","is_remote_configuration": true,"has_encrypted_payloads": true,"status": "string","evaluation_runtime": "server","bucketing_identifier": "distinct_id","last_called_at": "2019-08-24T14:15:22Z","_create_in_folder": "string","is_used_in_replay_settings": true,"is_eligible_for_experiment": true}
{"error": "string"}
{"error": "string"}
Enable a feature flag.
Sets active to true and changes nothing else. Targeting, variants, payloads, tags and
archived state are left as they are. An archived flag is refused: unarchive it first. A
flag whose own flag dependencies are disabled is also refused. An already-enabled flag
is returned unchanged.
feature_flag:writePOST /api /projects /:project_id /feature_flags /:id /enableexport 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/feature_flags/:id/enable/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.post("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/enable/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"id": 0,"name": "string","key": "string","filters": {},"deleted": true,"active": true,"archived": true,"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"},"created_at": "2019-08-24T14:15:22Z","updated_at": "2019-08-24T14:15:22Z","version": 0,"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"},"ensure_experience_continuity": true,"experiment_set": [0],"experiment_set_metadata": [{"id": 0,"name": "string","is_running": true}],"surveys": {},"features": {},"can_edit": true,"tags": [null],"evaluation_contexts": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true,"user_access_level": "string","creation_context": "feature_flags","is_remote_configuration": true,"has_encrypted_payloads": true,"status": "string","evaluation_runtime": "server","bucketing_identifier": "distinct_id","last_called_at": "2019-08-24T14:15:22Z","_create_in_folder": "string","is_used_in_replay_settings": true,"is_eligible_for_experiment": true}
{"error": "string"}
{"error": "string"}
Deprecated. Adds enriched insights to an existing legacy feature flag usage dashboard. No removal date has been set; usage charts remain available on the feature flag Usage tab.
POST /api /projects /:project_id /feature_flags /:id /enrich_usage_dashboardexport 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/feature_flags/:id/enrich_usage_dashboard/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.post("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/enrich_usage_dashboard/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"success": true}
{"success": true,"error": "string"}
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.
feature_flag:readGET /api /projects /:project_id /feature_flags /:id /remote_configexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \<ph_app_host>/api/projects/:project_id/feature_flags/:id/remote_config/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.get("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/remote_config/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},).json()
Also available via the PostHog MCP server:
feature-flags-status-retrieve— Get feature flag status
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.
feature_flag:readGET /api /projects /:project_id /feature_flags /:id /statusexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \<ph_app_host>/api/projects/:project_id/feature_flags/:id/status/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.get("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/status/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"status": "string","reason": "string","reason_states_rollout": true,"rollout": {"effectively_full_rollout": true,"has_targeting_conditions": true,"max_rollout_percentage": 0,"is_multivariate": true}}
Also available via the PostHog MCP server:
feature-flags-test-evaluation-create— Test feature flag evaluation
Test feature flag evaluation against a specific user at an optional point in time.
This endpoint allows testing how a feature flag would evaluate for a specific user, optionally at a historical timestamp. When a timestamp is provided, both the flag conditions and person properties are evaluated as they existed at that time.
feature_flag:readPOST /api /projects /:project_id /feature_flags /:id /test_evaluationexport 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/feature_flags/:id/test_evaluation/\-d distinct_id="string"
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.post("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/test_evaluation/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},data={"distinct_id": "string"}).json()
{"flag_key": "string","result": null,"reason": "string","reason_description": "string","condition_index": 0,"payload": null,"person_properties": {},"evaluation_distinct_id": "string","conditions": [{"index": 0,"matched": true,"properties_matched": true,"explanation": "string","rollout_percentage": 0.1,"rollout_excluded": true,"variant": "string","properties": [{"key": "string","operator": "string","value": null,"type": "string","actual_value": null,"matched": true,"explanation": "string"}]}]}
{"error": "string"}
{"error": "string"}
{"error": "string"}
{"error": "string"}
{"error": "string"}
Restore an archived feature flag to the default flag list.
Sets archived to false and changes nothing else. The flag stays disabled; enable it
with a separate call. An already-unarchived flag is returned unchanged.
feature_flag:writePOST /api /projects /:project_id /feature_flags /:id /unarchiveexport 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/feature_flags/:id/unarchive/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.post("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/unarchive/".format(project_id=project_id,feature_flag_id="<the feature flag id>"),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"id": 0,"name": "string","key": "string","filters": {},"deleted": true,"active": true,"archived": true,"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"},"created_at": "2019-08-24T14:15:22Z","updated_at": "2019-08-24T14:15:22Z","version": 0,"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"},"ensure_experience_continuity": true,"experiment_set": [0],"experiment_set_metadata": [{"id": 0,"name": "string","is_running": true}],"surveys": {},"features": {},"can_edit": true,"tags": [null],"evaluation_contexts": [null],"usage_dashboard": 0,"analytics_dashboards": [0],"has_enriched_analytics": true,"user_access_level": "string","creation_context": "feature_flags","is_remote_configuration": true,"has_encrypted_payloads": true,"status": "string","evaluation_runtime": "server","bucketing_identifier": "distinct_id","last_called_at": "2019-08-24T14:15:22Z","_create_in_folder": "string","is_used_in_replay_settings": true,"is_eligible_for_experiment": true}
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.
feature_flag:readGET /api /projects /:project_id /feature_flags /:id /versions /:version_numberexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \<ph_app_host>/api/projects/:project_id/feature_flags/:id/versions/:version_number/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.get("<ph_app_host>/api/projects/{project_id}/feature_flags/{feature_flag_id}/versions/{version_number}/".format(project_id=project_id,feature_flag_id="<the feature flag id>",version_number="<the version number>"),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"id": 0,"key": "string","name": "string","filters": {},"active": true,"deleted": true,"version": -2147483648,"ensure_experience_continuity": true,"has_enriched_analytics": true,"is_remote_configuration": true,"has_encrypted_payloads": true,"evaluation_runtime": "server","bucketing_identifier": "distinct_id","last_called_at": "2019-08-24T14:15:22Z","created_at": "2019-08-24T14:15:22Z","created_by": 0,"is_historical": true,"version_timestamp": "2019-08-24T14:15:22Z","modified_by": 0}
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.
activity_log:read101GET /api /projects /:project_id /feature_flags /activityexport POSTHOG_PERSONAL_API_KEY=[your personal api key]curl \-H "Authorization: Bearer $POSTHOG_PERSONAL_API_KEY" \<ph_app_host>/api/projects/:project_id/feature_flags/activity/
api_key = "[your personal api key]"project_id = "[your project id]"response = requests.get("<ph_app_host>/api/projects/{project_id}/feature_flags/activity/".format(project_id=project_id),headers={"Authorization": "Bearer {}".format(api_key)},).json()
{"results": [{"id": "497f6eca-6276-4993-bfeb-53cbbbba6f08","user": {},"activity": "string","scope": "string","item_id": "string","detail": {"id": "string","changes": [{"type": "string","action": "string","field": "string","before": null,"after": null}],"merge": {"type": "string","source": null,"target": null},"trigger": {"job_type": "string","job_id": "string","payload": null},"name": "string","short_id": "string","type": "string"},"created_at": "2019-08-24T14:15:22Z","is_system": true,"was_impersonated": true,"client": "string"}],"next": "http://example.com","previous": "http://example.com","total_count": 0}