Generated banner for Feature Flags API
Generated logo for Feature Flags API

Feature Flags API

PostHogOfficialCreated by PostHog

  • Skill
  • Tool integration
  • Data and AI
  • MIT
  • No issues found

From the author

PostHog feature flags for API applications
— the description by PostHog

AutoGineer summary

Written by AutoGineer from the skill’s own files, not by the author

This skill provides guidance and implementation patterns for integrating PostHog feature flags into API-based applications. It covers the necessary API calls to evaluate flag values, how to attribute flag information to captured events for analytics, and best practices for managing flags in a server-side environment. The skill emphasizes secure handling of project tokens via environment variables and provides examples for common request patterns.

What it does

  • Provides API endpoints for evaluating feature flag status for specific users.
  • Explains how to include feature flag data in event captures for accurate analytics.
  • Details the optional tracking of feature flag usage via the $feature_flag_called event.
  • Outlines best practices for server-side flag evaluation to prevent UI flicker.
  • Offers guidance on using environment variables for secure PostHog project token management.

When to use it

  • When you need to implement feature toggles in a backend API or server-side application.
  • When you want to perform multivariate testing or phased rollouts for API features.
  • When you need to ensure feature flag values are correctly attributed to events in PostHog insights.
  • When you want to manage feature flags programmatically using PostHog MCP tools.

Advantages

  • Enables server-side control of features, avoiding client-side UI flicker.
  • Provides clear patterns for integrating flag evaluation into existing API logic.
  • Ensures consistent analytics by linking feature flag variants to event properties.
  • Promotes secure development practices by prioritizing environment variables over hardcoded keys.

Usage examples

“How do I check if a feature flag is enabled for a user in my Python API?”
The agent provides a Python code snippet using the requests library to POST to the PostHog flags endpoint with the user's distinct_id and project token.
“How do I ensure my API events show which feature flag variant a user saw?”
The agent explains how to include the $feature/feature-flag-key property within the event properties when sending data to the PostHog capture endpoint.

Install

  1. Download the skill as a ZIP:

    https://mp-staging.autogineer.com/agent-skills/posthog/feature-flags-api/download
  2. Unzip it into the cross-client skills folder of your project:

    mkdir -p .agents/skills && unzip feature-flags-api.zip -d .agents/skills

Documentation by PostHog

PostHog feature flags for API

This skill helps you add PostHog feature flags to API applications.

Reference files

  • references/api.md - API feature flags installation - docs

  • references/adding-feature-flag-code.md - Adding feature flag code - docs

  • references/best-practices.md - Feature flag best practices - docs

Consult the documentation for API details and framework-specific patterns.

Key principles

  • Environment variables: Always use environment variables for PostHog keys. Never hardcode them.

  • Minimal changes: Add feature flag code alongside existing logic. Don't replace or restructure existing code.

  • Boolean flags first: Default to boolean flag checks unless the user specifically asks for multivariate flags.

  • Server-side when possible: Prefer server-side flag evaluation to avoid UI flicker.

PostHog MCP tools

Check if a PostHog MCP server is connected. If available, look for tools related to feature flag management (creating, listing, updating, deleting flags). Use these tools to manage flags directly in PostHog rather than requiring the user to do it manually in the dashboard.

Framework guidelines

No specific framework guidelines.

Files

references/api.md

API feature flags installation - Docs

  1. 1

    Evaluate the feature flag value using flags

    Required

    flags is the endpoint used to determine if a given flag is enabled for a certain user or not.

    PostHog AI

    Basic request (flags only)
    curl -v -L --header "Content-Type: application/json" -d '{
        "token": "<ph_project_token>",
        "distinct_id": "distinct_id_of_your_user",
        "groups" : {
            "group_type": "group_id"
        }
    }' "https://us.i.posthog.com/flags?v=2"
    Python
    import requests
    import json
    url = "https://us.i.posthog.com/flags?v=2"
    headers = {
        "Content-Type": "application/json"
    }
    payload = {
        "token": "<ph_project_token>",
        "distinct_id": "user distinct id",
        "groups": {
            "group_type": "group_id"
        }
    }
    response = requests.post(url, headers=headers, data=json.dumps(payload))
    print(response.json())
    Node.js
    const response = await fetch("https://us.i.posthog.com/flags?v=2", {
        method: "POST",
        headers: {
            "Content-Type": "application/json",
        },
        body: JSON.stringify({
            token: "<ph_project_token>",
            distinct_id: "user distinct id",
            groups: {
                group_type: "group_id",
            },
        }),
    });
    const data = await response.json();
    console.log(data);

    Note: The groups key is only required for group-based feature flags. If you use it, replace group_type and group_id with the values for your group such as company: "Twitter".

  2. 2

    Include feature flag information when capturing events

    Required

    If you want to use your feature flag to breakdown or filter events in your insights, you'll need to include feature flag information in those events. This ensures that the feature flag value is attributed correctly to the event.

    Note: This step is only required for events captured using our server-side SDKs or API.

    PostHog AI

    Terminal
    curl -v -L --header "Content-Type: application/json" -d '{
        "token": "<ph_project_token>",
        "event": "your_event_name",
        "distinct_id": "distinct_id_of_your_user",
        "properties": {
            "$feature/feature-flag-key": "variant-key"
        }
    }' https://us.i.posthog.com/i/v0/e/
    Python
    import requests
    import json
    url = "https://us.i.posthog.com/i/v0/e/"
    headers = {
        "Content-Type": "application/json"
    }
    payload = {
        "token": "<ph_project_token>",
        "event": "your_event_name",
        "distinct_id": "distinct_id_of_your_user",
        "properties": {
            "$feature/feature-flag-key": "variant-key"
        }
    }
    response = requests.post(url, headers=headers, data=json.dumps(payload))
    print(response)
  3. 3

    Send a $feature_flag_called event

    Optional

    To track usage of your feature flag and view related analytics in PostHog, submit the $feature_flag_called event whenever you check a feature flag value in your code.

    You need to include two properties with this event:

    1. $feature_flag_response: This is the name of the variant the user has been assigned to e.g., "control" or "test"

    2. $feature_flag: This is the key of the feature flag in your experiment.

    PostHog AI

    Terminal
    curl -v -L --header "Content-Type: application/json" -d '{
        "token": "<ph_project_token>",
        "event": "$feature_flag_called",
        "distinct_id": "distinct_id_of_your_user",
        "properties": {
            "$feature_flag": "feature-flag-key",
            "$feature_flag_response": "variant-name"
        }
    }' https://us.i.posthog.com/i/v0/e/
    Python
    import requests
    import json
    url = "https://us.i.posthog.com/i/v0/e/"
    headers = {
        "Content-Type": "application/json"
    }
    payload = {
        "token": "<ph_project_token>",
        "event": "$feature_flag_called",
        "distinct_id": "distinct_id_of_your_user",
        "properties": {
            "$feature_flag": "feature-flag-key",
            "$feature_flag_response": "variant-name"
        }
    }
    response = requests.post(url, headers=headers, data=json.dumps(payload))
    print(response)
  4. 4

    Running experiments

    Optional

    Experiments run on top of our feature flags. Once you've implemented the flag in your code, you run an experiment by creating a new experiment in the PostHog dashboard.

  5. 5

    Next steps

    Recommended

    Now that you're evaluating flags, continue with the resources below to learn what else Feature Flags enables within the PostHog platform.

    ResourceDescription
    Creating a feature flagHow to create a feature flag in PostHog
    Adding feature flag codeHow to check flags in your code for all platforms
    Framework-specific guidesSetup guides for React Native, Next.js, Flutter, and other frameworks
    How to do a phased rolloutGradually roll out features to minimize risk
    More tutorialsOther real-world examples and use cases
Community questions

Ask a question

Was this page useful?

HelpfulCould be better

Requirements and compatibility

Works with: Claude Code, Claude apps, OpenAI Codex, GitHub Copilot, Cursor, Gemini CLI, Kiro, OpenCode, Goose, Amp, Roo Code, JetBrains Junie, Factory Droid, Devin (ex-Windsurf), Mistral Vibe, OpenHands, Letta

“Works with” means the tool reads the open Agent Skills format; a skill written for one tool may use features others lack.

Needs: Needs an MCP server

Security

No issues found by our static scan· No issues found

A static scan is not a guarantee. Skills are third-party content: review a skill before you let an agent use it.

Attribution and licence

Created by
PostHog
Publisher
PostHog (Official)
Source
PostHog/skills · skills/posthog/feature-flags/skills/api · commit a5d30e7
Licence
MIT License (redistribution allowed)
  • LICENSE (added by AutoGineer from LICENSE)
  • ATTRIBUTION.md (written by AutoGineer)
Synced
Also distributed in
PostHog/skills

AutoGineer is not affiliated with or endorsed by PostHog.

Download ZIP

The ZIP holds the skill’s files, its licence files and an ATTRIBUTION.md. Download feature-flags-api.zip