> ## Documentation Index
> Fetch the complete documentation index at: https://docs.kerne.io/llms.txt
> Use this file to discover all available pages before exploring further.

# List active plans for the default or specified product

> Resolves Product.is_default if no product (id/slug) is provided. Requires x-app-id (APP_ID).



## OpenAPI

````yaml /openapi.json get /v1/pricing/plans
openapi: 3.0.0
info:
  title: Kerne API
  description: >-
    Kerne SaaS Foundation as a Service - authentication, authorization, and
    billing management. Errors follow standardized error codes (K1xxx-K9xxx)
    documented at https://docs.kerne.io/errors
  version: 1.0.0
  contact:
    name: Kerne Team
    url: https://kerne.io
    email: support@kerne.io
  license:
    name: Proprietary
    url: https://kerne.io/license
servers:
  - url: https://api.kerne.io
    description: Production Server
security: []
tags:
  - name: Auth
    description: Authentication endpoints
  - name: Waitlist
    description: Waitlist management
  - name: Invitations
    description: Invitation system
  - name: Billing
    description: 'The tenant''s end users: subscription, entitlements, usage, checkout'
  - name: Pricing
    description: Public pricing page data
paths:
  /v1/pricing/plans:
    get:
      tags:
        - Pricing
      summary: List active plans for the default or specified product
      description: >-
        Resolves Product.is_default if no product (id/slug) is provided.
        Requires x-app-id (APP_ID).
      operationId: PricingController_listPublicPlans
      parameters:
        - name: product
          required: true
          in: query
          schema:
            type: string
      responses:
        '200':
          description: Active plans retrieved successfully
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/PublicPlanResponseDto'
      security:
        - AppIdentifier: []
components:
  schemas:
    PublicPlanResponseDto:
      type: object
      properties:
        id:
          type: string
        slug:
          type: string
        name:
          type: string
        description:
          type: string
          nullable: true
        is_default:
          type: boolean
        trial_days:
          type: number
        sort_order:
          type: number
        highlight:
          type: string
          enum:
            - RECOMMENDED
            - MOST_SUBSCRIBED
          nullable: true
        contact_sales:
          type: boolean
        prices:
          type: array
          items:
            $ref: '#/components/schemas/PublicPlanPriceSummaryDto'
        entitlements:
          type: array
          items:
            $ref: '#/components/schemas/PublicPlanEntitlementSummaryDto'
      required:
        - id
        - slug
        - name
        - description
        - is_default
        - trial_days
        - sort_order
        - highlight
        - contact_sales
        - prices
        - entitlements
    PublicPlanPriceSummaryDto:
      type: object
      properties:
        id:
          type: string
        slug:
          type: string
        amount:
          type: number
        currency:
          type: string
        interval:
          type: string
        trial_days:
          type: number
          nullable: true
        label:
          $ref: '#/components/schemas/PublicPriceLabelSummaryDto'
      required:
        - id
        - slug
        - amount
        - currency
        - interval
        - trial_days
        - label
    PublicPlanEntitlementSummaryDto:
      type: object
      properties:
        feature_key:
          type: string
        feature_name:
          type: string
        feature_type:
          type: string
        unit_label:
          type: string
          nullable: true
        limit:
          type: number
          nullable: true
        value:
          type: string
          nullable: true
        overage:
          type: string
          enum:
            - BLOCK
            - ALLOW
            - BILL
        limit_binding:
          type: string
          enum:
            - CUSTOMER
            - DIMENSION
        dimension_key:
          type: string
          nullable: true
        quota_period:
          type: string
          nullable: true
        reset_policy:
          type: string
          nullable: true
        overage_cap_amount:
          type: number
          nullable: true
        meter:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PublicMeterSummaryDto'
        drivers:
          type: array
          items:
            $ref: '#/components/schemas/PublicDriverSummaryDto'
      required:
        - feature_key
        - feature_name
        - feature_type
        - unit_label
        - limit
        - value
        - overage
        - limit_binding
        - dimension_key
        - quota_period
        - reset_policy
        - overage_cap_amount
        - meter
        - drivers
    PublicPriceLabelSummaryDto:
      type: object
      properties:
        slug:
          type: string
        name:
          type: string
        sort_order:
          type: number
        display_interval:
          type: string
          nullable: true
      required:
        - slug
        - name
        - sort_order
        - display_interval
    PublicMeterSummaryDto:
      type: object
      properties:
        pricing:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/PricingReadDto'
      required:
        - pricing
    PublicDriverSummaryDto:
      type: object
      properties:
        interval:
          type: string
        step_units:
          type: number
        max_steps:
          type: number
          nullable: true
        pricing:
          $ref: '#/components/schemas/PricingReadDto'
      required:
        - interval
        - step_units
        - max_steps
        - pricing
    PricingReadDto:
      type: object
      properties:
        transform:
          $ref: '#/components/schemas/QuantityTransformReadDto'
        selection:
          $ref: '#/components/schemas/PricingSelectionReadDto'
        currency:
          type: string
      required:
        - transform
        - selection
        - currency
    QuantityTransformReadDto:
      type: object
      properties:
        block_size:
          type: number
        mode:
          type: string
          enum:
            - blocks
            - proportional
        round:
          type: string
          enum:
            - up
            - down
        block_label:
          type: string
          nullable: true
      required:
        - block_size
        - mode
        - round
        - block_label
    PricingSelectionReadDto:
      type: object
      properties:
        kind:
          type: string
          enum:
            - flat
            - volume
            - graduated
        unit_amount:
          type: number
        tiers:
          type: array
          items:
            $ref: '#/components/schemas/PricingTierReadDto'
      required:
        - kind
    PricingTierReadDto:
      type: object
      properties:
        up_to:
          type: number
          nullable: true
        unit_amount:
          type: number
      required:
        - up_to
        - unit_amount
  securitySchemes:
    AppIdentifier:
      type: apiKey
      in: header
      name: x-app-id
      description: App identifier (App.id, sent as the x-app-id header)

````