API scopes
Contents
A scope grants access to one part of PostHog, such as feature flags or insights. You choose scopes when you create a personal API key or a project secret API key, and when you authorize an OAuth app.
Each scope has two levels:
- Read (
<object>:read) lets the key or app view the data. - Write (
<object>:write) lets it view, create, change, and delete the data.
Write access includes read access, so feature_flag:write already covers everything feature_flag:read does. For each part of PostHog, request :read if the key or app only views data, or :write if it also changes it.
Grant only the scopes a key or app needs. A request that needs a scope the key or app doesn't have fails with a 403 error that names the missing scope.
Scopes
Product analytics
alert:readReadalert:writeRead and writeannotation:readReadannotation:writeRead and writecanvas:readReadcanvas:writeRead and write- Applies to the whole organization, so keys limited to some projects can't have it.
cross_project_dashboard:readReadcross_project_dashboard:writeRead and writedashboard:readReaddashboard:writeRead and writedashboard_template:readReaddashboard_template:writeRead and writeexport:readReadexport:writeRead and writeinsight:readReadinsight:writeRead and writeinsight_variable:readReadinsight_variable:writeRead and writenotebook:readReadnotebook:writeRead and writequery:readRead- sharing_configuration:read: Reads the access tokens of public sharing links, which keep working after this token expires.
- sharing_configuration:write: Creates public sharing links that anyone with the link can open.
sharing_configuration:readReadsharing_configuration:writeRead and writesubscription:readReadsubscription:writeRead and writeWeb, marketing & revenue analytics
heatmap:readReadheatmap:writeRead and writemarketing_analytics:readReadmarketing_analytics:writeRead and writeweb_analytics:readReadweb_analytics:writeRead and writeEvents, people & data model
action:readReadaction:writeRead and writecohort:readReadcohort:writeRead and writeelement:readReadelement:writeRead and writeevent_definition:readReadevent_definition:writeRead and writeevent_filter:readReadevent_filter:writeRead and writegroup:readReadgroup:writeRead and writeperson:readReadperson:writeRead and writeproperty_definition:readReadproperty_definition:writeRead and writeSession replay
replay_scanner:readReadreplay_scanner:writeRead and writesession_recording:readReadsession_recording:writeRead and writesession_recording_playlist:readReadsession_recording_playlist:writeRead and writevision_alert:readReadvision_alert:writeRead and writeFeature flags, experiments & surveys
- Early access features manage a linked feature flag, so this key needs write access to feature flags too.
early_access_feature:readReadearly_access_feature:writeRead and writeexperiment:readReadexperiment:writeRead and writeexperiment_holdout:readReadexperiment_holdout:writeRead and writeexperiment_saved_metric:readReadexperiment_saved_metric:writeRead and writefeature_flag:readReadfeature_flag:writeRead and writeproduct_tour:readReadproduct_tour:writeRead and write- Surveys with targeting also manage a feature flag, so this key needs write access to feature flags too.
survey:readReadsurvey:writeRead and writeError tracking, logs & tracing
error_tracking:readReaderror_tracking:writeRead and writelogs:readReadlogs:writeRead and writemetrics:readReadmetrics:writeRead and writetracing:readReadtracing:writeRead and writeDeveloper experience
engineering_analytics:readReadengineering_analytics:writeRead and writestamphog:readReadstamphog:writeRead and writevisual_review:readReadvisual_review:writeRead and writeLLM & MCP analytics
ai_observability_clusters:readReadai_observability_clusters:writeRead and writedataset:readReaddataset:writeRead and writeevaluation:readReadevaluation:writeRead and writellm_analytics:readReadllm_analytics:writeRead and write- llm_gateway:read is granted only by PostHog, so OAuth apps can't request it.
llm_gateway:readReadllm_playground:readReadllm_playground:writeRead and writellm_prompt:readReadllm_prompt:writeRead and write- llm_provider_key:write: Stores and changes LLM provider API keys.
llm_provider_key:readReadllm_provider_key:writeRead and writellm_skill:readReadllm_skill:writeRead and writemcp_analytics:readReadmcp_analytics:writeRead and writeoffline_evaluation_ingestion:writeRead and writetagger:readReadtagger:writeRead and writeData warehouse & pipelines
batch_export:readReadbatch_export:writeRead and writeendpoint:readReadendpoint:writeRead and writeexternal_data_source:readReadexternal_data_source:writeRead and write- hog_flow:write: Runs workflow code that can use the stored credentials of the project's integrations.
hog_flow:readReadhog_flow:writeRead and write- hog_function:write: Runs code, including on your website, that can use the stored credentials of the project's integrations.
hog_function:readReadhog_function:writeRead and writeplugin:readReadplugin:writeRead and writestreamlit_app:readReadstreamlit_app:writeRead and writewarehouse_table:readReadwarehouse_table:writeRead and writewarehouse_view:readReadwarehouse_view:writeRead and writewebhook:readReadwebhook:writeRead and writeMessaging
transactional_email:readReadtransactional_email:writeRead and writeAI & context management tools
- approvals:write: Approves or rejects change requests that gate other changes.
approvals:readReadapprovals:writeRead and write- autoresearch:write: Starts agent runs that get their own longer-lived token.
autoresearch:readReadautoresearch:writeRead and writebusiness_knowledge:readReadbusiness_knowledge:writeRead and writeconversation:readReadconversation:writeRead and writedata_catalog:readReaddata_catalog:writeRead and writedata_catalog_approval:writeRead and writefield_note:readReadfield_note:writeRead and writeinbox:readReadinbox:writeRead and writereview_hog:readReadreview_hog:writeRead and writesignal_scout:readReadsignal_scout:writeRead and writesignal_usage:readReadtask:readReadtask:writeRead and writetoday:readReadtoday:writeRead and writeCustomers & support
account:readReadaccount:writeRead and writecustomer_analytics:readReadcustomer_analytics:writeRead and writecustomer_journey:readReadcustomer_journey:writeRead and writecustomer_profile_config:readReadcustomer_profile_config:writeRead and writecustomer_task:readReadcustomer_task:writeRead and writesupport_ticket:readReadsupport_ticket:writeRead and writeticket:readReadticket:writeRead and writeusage_metric:readReadusage_metric:writeRead and writeSetup & data management
data_deletion:readReaddata_deletion:writeRead and writehealth_issue:readReadhealth_issue:writeRead and writeingestion_warning:readReadintegration:readRead- organization_integration:write: Connects and changes organization-wide integrations and their stored credentials.
- Applies to the whole organization, so keys limited to some projects can't have it.
organization_integration:readReadorganization_integration:writeRead and writeproduct_enablement:writeRead and writeOrganization & account
- access_control:write: Changes who can access resources in this project.
access_control:readReadaccess_control:writeRead and writeactivity_log:readReadactivity_log:writeRead and write- billing:read: Reads the whole organization's billing details, not just this project's.
- billing:write: Changes the organization's subscription and payment details.
billing:readReadbilling:writeRead and writecomment:readReadcomment:writeRead and writefile_system:readReadfile_system_shortcut:readReadfile_system_shortcut:writeRead and writelegal_document:readReadlegal_document:writeRead and write- organization:write: Changes organization settings, including roles and OAuth apps.
- Applies to the whole organization, so keys limited to some projects can't have it.
organization:readReadorganization:writeRead and write- organization_member:write: Invites and removes organization members and changes their roles, so it can give people access beyond this token's scopes.
- Applies to the whole organization, so keys limited to some projects can't have it.
organization_member:readReadorganization_member:writeRead and writeproject:readReadproject:writeRead and writeuploaded_media:readReaduploaded_media:writeRead and write- user:read: Reads the account details of the user the token acts as, including every organization and project they belong to.
user:readReadworkload_trust_policy:readReadworkload_trust_policy_request:readReadworkload_trust_policy_request:writeRead and writeFAQ
Why can't my OAuth app request some scopes?
PostHog grants some scopes only through its own admin tools, so an OAuth app that registers itself can't request them. The notes under each description mark these scopes. The scopes an OAuth app can request are also listed in scopes_supported in the authorization server metadata.
Can I get this list as JSON?
Yes. https://oauth.posthog.com/oauth/scopes returns every scope on this page, with the same descriptions. It doesn't need authentication.





