---
title: "Get all flags (SDK)"
method: GET
path: "/api/client/features"
tags: ["Client"]
---

# Get all flags (SDK)

`GET /api/client/features`

Returns the SDK configuration for all feature flags that are available to the provided API key. Used by SDKs to configure local evaluation

## Response `200`

clientFeaturesSchema

- ClientFeaturesSchema — Configuration data for backend SDKs for evaluating feature flags.
  - `version` number, required — A version number for the format used in the response. Most Unleash instances now return version 2, which includes segments as a separate array
  - `features` ClientFeatureSchema[], required — A list of feature flags with their configuration
    - `name` string, required — The unique name of a feature flag. Is validated to be URL safe on creation
    - `type` string — What kind of feature flag is this. Refer to the documentation on [feature flag types](https://docs.getunleash.io/concepts/feature-flags#feature-flag-types) for more information
    - `description` string, nullable — A description of the flag
    - `enabled` boolean, required — Whether the feature flag is enabled for the current API key or not. This is ANDed with the evaluation results of the strategies list, so if this is false, the evaluation result will always be false
    - `stale` boolean — If this is true Unleash believes this feature flag has been active longer than Unleash expects a flag of this type to be active
    - `impressionData` boolean, nullable — Set to true if SDKs should trigger [impression events](https://docs.getunleash.io/concepts/impression-data) when this flag is evaluated
    - `project` string — Which project this feature flag belongs to
    - `strategies` FeatureStrategySchema[] — Evaluation strategies for this flag. Each entry in this list will be evaluated and ORed together
      - `id` string — A uuid for the feature strategy
      - `name` string, required — The name or type of strategy
      - `title` string, nullable — A descriptive title for the strategy
      - `disabled` boolean, nullable — A toggle to disable the strategy. defaults to false. Disabled strategies are not evaluated or returned to the SDKs
      - `featureName` string — The name or feature the strategy is attached to
      - `sortOrder` number — The order of the strategy in the list
      - `segments` number[] — A list of segment ids attached to the strategy
      - `constraints` ConstraintSchema[] — A list of the constraints attached to the strategy. See https://docs.getunleash.io/concepts/activation-strategies#constraints
        - `contextName` string, required — The name of the context field that this constraint should apply to.
        - `operator` 'NOT_IN' | 'IN' | 'STR_ENDS_WITH' | 'STR_STARTS_WITH' | 'STR_CONTAINS' | 'NUM_EQ' | 'NUM_GT' | 'NUM_GTE' | 'NUM_LT' | 'NUM_LTE' | 'DATE_AFTER' | 'DATE_BEFORE' | 'SEMVER_EQ' | 'SEMVER_GT' | 'SEMVER_LT' | 'SEMVER_GTE' | 'SEMVER_LTE' | 'REGEX', required — The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
        - `caseInsensitive` boolean — Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).
        - `inverted` boolean — Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.
        - `values` string[] — The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.
        - `value` string — The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.
      - `variants` StrategyVariantSchema[] — Strategy level variants
        - `name` string, required — The variant name. Must be unique for this feature flag
        - `weight` integer, required — The weight is the likelihood of any one user getting this variant. It is an integer between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information
        - `weightType` 'variable' | 'fix', required — Set to `fix` if this variant must have exactly the weight allocated to it. If the type is `variable`, the weight will adjust so that the total weight of all variants adds up to 1000. Refer to the [variant weight documentation](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight).
        - `stickiness` string, required — The [stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) to use for distribution of this variant. Stickiness is how Unleash guarantees that the same user gets the same variant every time
        - `payload` object — Extra data configured for this variant
          - `type` 'json' | 'csv' | 'string' | 'number', required — The type of the value. Commonly used types are string, number, json and csv.
          - `value` string, required — The actual value of payload
      - `parameters` ParametersSchema — A list of parameters for a strategy
    - `variants` VariantSchema[], nullable — [Variants](https://docs.getunleash.io/concepts/feature-flag-variants#what-are-variants) configured for this flag
      - `name` string, required — The variants name. Is unique for this feature flag
      - `weight` number, required — The weight is the likelihood of any one user getting this variant. It is a number between 0 and 1000. See the section on [variant weights](https://docs.getunleash.io/concepts/feature-flag-variants#variant-weight) for more information
      - `weightType` 'variable' | 'fix' — Set to fix if this variant must have exactly the weight allocated to it. If the type is variable, the weight will adjust so that the total weight of all variants adds up to 1000
      - `stickiness` string — [Stickiness](https://docs.getunleash.io/concepts/feature-flag-variants#variant-stickiness) is how Unleash guarantees that the same user gets the same variant every time
      - `payload` object — Extra data configured for this variant
        - `type` 'json' | 'csv' | 'string' | 'number', required — The type of the value. Commonly used types are string, number, json and csv.
        - `value` string, required — The actual value of payload
      - `overrides` OverrideSchema[] — Overrides assigning specific variants to specific users. The weighting system automatically assigns users to specific groups for you, but any overrides in this list will take precedence.
        - `contextName` string, required — The name of the context field used to determine overrides
        - `values` string[], required — Which values that should be overriden
    - `dependencies` DependentFeatureSchema[] — Feature dependencies for this flag
      - `feature` string, required — The name of the feature we depend on.
      - `enabled` boolean — Whether the parent feature should be enabled. When `false` variants are ignored. `true` by default.
      - `variants` string[] — The list of variants the parent feature should resolve to. Leave empty when you only want to check the `enabled` status.
  - `segments` ClientSegmentSchema[] — A list of [Segments](https://docs.getunleash.io/concepts/segments) configured for this Unleash instance
    - `id` number, required — The segment's id.
    - `name` string — The name of the segment.
    - `constraints` ConstraintSchema[], required — List of constraints that determine which users are part of the segment
      - `contextName` string, required — The name of the context field that this constraint should apply to.
      - `operator` 'NOT_IN' | 'IN' | 'STR_ENDS_WITH' | 'STR_STARTS_WITH' | 'STR_CONTAINS' | 'NUM_EQ' | 'NUM_GT' | 'NUM_GTE' | 'NUM_LT' | 'NUM_LTE' | 'DATE_AFTER' | 'DATE_BEFORE' | 'SEMVER_EQ' | 'SEMVER_GT' | 'SEMVER_LT' | 'SEMVER_GTE' | 'SEMVER_LTE' | 'REGEX', required — The operator to use when evaluating this constraint. For more information about the various operators, refer to [the strategy constraint operator documentation](https://docs.getunleash.io/concepts/activation-strategies#constraint-operators).
      - `caseInsensitive` boolean — Whether the operator should be case sensitive or not. Defaults to `false` (being case sensitive).
      - `inverted` boolean — Whether the result should be negated or not. If `true`, will turn a `true` result into a `false` result and vice versa.
      - `values` string[] — The context values that should be used for constraint evaluation. Use this property instead of `value` for properties that accept multiple values.
      - `value` string — The context value that should be used for constraint evaluation. Use this property instead of `values` for properties that only accept single values.
  - `query` ClientFeaturesQuerySchema — Query parameters active for a client features request
    - `tag` array[] — Features tagged with one of these tags are included
      - string[]
    - `project` string[] — Features that are part of these projects are included in this response. This is now handled by API tokens and was marked as deprecated in v5
    - `namePrefix` string — Features are filtered to only include features whose name starts with this prefix
    - `environment` string — Strategies for the feature flag configured for this environment are included. This is now handled by API tokens and was marked as deprecated in v5
    - `inlineSegmentConstraints` boolean — Set to true if requesting client does not support Unleash-Client-Specification 4.2.2 or newer. Modern SDKs will have this set to false, since they will be able to merge constraints and segments themselves

---

[API](https://skmtc.net/unleash/apis/unleash-api-2.md) · [All operations](https://skmtc.net/unleash/apis/unleash-api-2/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/unleash/unleash-api-2/versions/3ead4e02c359/schema)
