---
title: "List all features"
method: GET
path: "/features"
tags: ["Features"]
---

# List all features

`GET /features`

## Request

- Base URL: `https://api-m.sandbox.paypal.com`
- URL: `https://api-m.sandbox.paypal.com/features`
- Auth: OAuth 2
  - Client credentials
  - Token URL: `/api/oauth-proxy` scopes: `read`, `write`
- TypeScript: <https://skmtc.dev/paypal/apis/usage-based-billing-api/docs/features/get.ts> (a function with typed inputs; its response is checked against the schema)

Retrieves a comprehensive list of all features defined in your system. Features represent capabilities or functionalities that can be entitled to customers through subscription plans. Use this endpoint to discover available features when building plan configurations or displaying feature catalogs to administrators.

## Query parameters

- `per_page` integer
- `page` integer

## Response `200`

Successfully retrieved the list of features with their complete configurations including all privileges

- object
  - `features` FeatureResponse[]
    - `code` string, required: Unique identifier for the feature across your entire system. This code is used when creating entitlements and should represent the feature's function (e.g., 'seats', 'api-access', 'API_STORAGE'). Allows alphanumeric characters, underscores, and hyphens.
    - `name` string: Customer-facing name of the feature that clearly describes what functionality or capability it provides. This name appears in billing interfaces and customer portals.
    - `description` string: Detailed explanation of what this feature provides, its limitations, and how it affects the customer's experience.
    - `privileges` FeaturePrivilegeBase[]: Privileges associated with this feature. Can be empty
      - `code` string, required: Unique identifier for the privilege within its parent feature. Used as a key when assigning values to this privilege in entitlements. Allows alphanumeric characters, underscores, and hyphens.
      - `name` string: Human-friendly display name for the privilege shown in user interfaces. This helps users understand what aspect of the feature is being configured.
      - `value_type` 'STRING' | 'BOOLEAN' | 'INTEGER' | 'SELECT': Defines the data type that this privilege accepts when being assigned values in entitlements. 'INTEGER' for numeric limits, 'BOOLEAN' for on/off toggles, 'STRING' for text values, 'SELECT' for predefined options.
      - `config` PrivilegeConfig: Additional configuration for privileges that require constraints or options. Currently used for 'select' type privileges to define allowed values.
        - `select_options` string[]: Defines the allowed values when value_type is 'select'. When creating entitlements, only these predefined options can be assigned. Useful for features like SSO providers, regions, or service tiers.
    - `created_at` string, date-time, required: Date and time in ISO 8601 format.
  - `metadata` PaginationMetadata
    - `total_count` integer
    - `total_pages` integer
    - `current_page` integer

## Other responses

- `403`: Authorization failed due to insufficient permissions.
- `500`: Internal Server Error - An unexpected error occurred

---

[API](https://skmtc.dev/paypal/apis/usage-based-billing-api.md) - [All operations](https://skmtc.dev/paypal/apis/usage-based-billing-api/llms.txt) - [OpenAPI document](https://skmtc.dev/paypal/apis/usage-based-billing-api/revisions/22fb46514ac4?raw)
