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

# List product bundles

> Returns a paginated list of product bundles.



## OpenAPI

````yaml /api-reference/v2/specs/2026-04-01.json get /bundles
openapi: 3.1.0
info:
  title: Alguna Public API
  version: '2026-04-01'
servers:
  - url: https://api.alguna.io
security:
  - bearerAuth: []
tags:
  - name: Billing Events and Metrics
  - name: Credit Notes
  - name: Credits
  - name: Customer Portal Sessions
  - name: Customers
  - name: Insights
  - name: Invoices
  - name: Payments
  - name: Plans
  - name: Product Bundles
  - name: Products
  - name: Refunds
  - name: Revenue Schedules
  - name: Subscription Changes
  - name: Subscription Versions
  - name: Subscriptions
  - name: Wallet Grants
  - name: Wallets
paths:
  /bundles:
    get:
      tags:
        - Product Bundles
      summary: List product bundles
      description: Returns a paginated list of product bundles.
      operationId: list-bundles
      parameters:
        - in: header
          name: Alguna-Version
          required: true
          schema:
            enum:
              - '2026-04-01'
            type: string
        - in: query
          name: limit
          required: true
          schema:
            description: Number of items to return per page
            example: 20
            format: int64
            type: integer
        - in: query
          name: offset
          required: true
          schema:
            description: Number of items to skip
            example: 0
            format: int64
            type: integer
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BundleListResponse'
          description: Success
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unauthorized
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Not Found
        '422':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Unprocessable Entity
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          description: Internal Server Error
components:
  schemas:
    BundleListResponse:
      properties:
        data:
          description: List of bundles
          items:
            $ref: '#/components/schemas/BundleResponse'
          type: array
        pagination:
          allOf:
            - $ref: '#/components/schemas/PaginationMeta'
          description: Pagination metadata
      required:
        - data
        - pagination
      type: object
    ErrorResponse:
      properties:
        detail:
          type: string
        status:
          format: int64
          type: integer
      required:
        - status
        - detail
      type: object
    BundleResponse:
      properties:
        description:
          description: A brief description of the bundle
          example: Our standard plan bundle
          nullable: true
          type: string
        id:
          description: Unique identifier for the bundle
          example: bnd_01H1VECT
          type: string
        name:
          description: The name of the bundle
          example: Standard Plan
          type: string
        prices:
          description: Prices included in this bundle
          items:
            $ref: '#/components/schemas/PriceResponse'
          type: array
      required:
        - id
        - name
        - prices
      type: object
    PaginationMeta:
      properties:
        per_page:
          description: Number of items returned per page
          example: 20
          format: int64
          type: integer
        total_pages:
          description: Total number of pages available
          example: 5
          format: int64
          type: integer
      required:
        - per_page
        - total_pages
      type: object
    PriceResponse:
      properties:
        billing_direction:
          description: When the price is billed
          enum:
            - advance
            - arrears
          example: arrears
          type: string
        billing_frequency:
          description: How often the price is billed
          enum:
            - recurring
            - one-off
          example: recurring
          nullable: true
          type: string
        billing_interval:
          description: Billing interval
          example: monthly
          type: string
        billing_interval_count:
          description: Positive count of BillingIntervalUnits per period
          example: 3
          format: int64
          nullable: true
          type: integer
        billing_interval_unit:
          description: Unit of the billing cadence
          enum:
            - day
            - week
            - month
            - year
          example: month
          nullable: true
          type: string
        charge_on_contract_start:
          description: Whether to charge on contract start date
          type: boolean
        created_at:
          description: Timestamp when the price was created
          format: date-time
          type: string
        currency:
          description: Currency code
          example: USD
          type: string
        discount:
          allOf:
            - $ref: '#/components/schemas/Discount'
          description: Discount applied to this price
          nullable: true
        display_order:
          description: Display order
          format: int64
          nullable: true
          type: integer
        expression_pricing_model:
          allOf:
            - $ref: '#/components/schemas/ExpressionPricingModel'
          description: Expression-based pricing details
          nullable: true
        fee_type:
          description: Whether the price is fixed or metered
          enum:
            - fixed
            - metered
          example: fixed
          type: string
        fixed_pricing_model:
          allOf:
            - $ref: '#/components/schemas/FixedPricingModel'
          description: Fixed pricing details
          nullable: true
        graduated_percentage_pricing_model:
          allOf:
            - $ref: '#/components/schemas/GraduatedPercentagePricingModel'
          description: Graduated percentage pricing details
          nullable: true
        graduated_tiered_pricing_model:
          allOf:
            - $ref: '#/components/schemas/GraduatedTieredPricingModel'
          description: Graduated tiered pricing details
          nullable: true
        id:
          description: Unique identifier for the price
          type: string
        maximum_spend:
          allOf:
            - $ref: '#/components/schemas/SpendingThreshold'
          description: Maximum spend cap
          nullable: true
        metric_ids:
          description: Associated metric identifiers
          items:
            type: string
          type: array
        minimum_spend:
          allOf:
            - $ref: '#/components/schemas/SpendingThreshold'
          description: Minimum spend threshold
          nullable: true
        prepaid_fixed_tiered_pricing_model:
          allOf:
            - $ref: '#/components/schemas/PrepaidFixedTieredPricingModel'
          description: Prepaid fixed tiered pricing details
          nullable: true
        prepaid_tiered_pricing_model:
          allOf:
            - $ref: '#/components/schemas/PrepaidTieredPricingModel'
          description: Prepaid tiered pricing details
          nullable: true
        product:
          allOf:
            - $ref: '#/components/schemas/PriceProductResponse'
          description: The product this price is for
        product_id:
          description: Identifier of the associated product
          type: string
        tiered_percentage_pricing_model:
          allOf:
            - $ref: '#/components/schemas/TieredPercentagePricingModel'
          description: Tiered percentage pricing details
          nullable: true
        tiered_pricing_model:
          allOf:
            - $ref: '#/components/schemas/TieredPricingModel'
          description: Tiered pricing details
          nullable: true
        trial_period_days:
          description: Trial period in days
          format: int64
          nullable: true
          type: integer
        type:
          description: The pricing model type
          example: unit
          type: string
        unit_pricing_model:
          allOf:
            - $ref: '#/components/schemas/UnitPricingModel'
          description: Unit pricing details
          nullable: true
        updated_at:
          description: Timestamp when the price was last updated
          format: date-time
          type: string
        volume_percentage_pricing_model:
          allOf:
            - $ref: '#/components/schemas/VolumePercentagePricingModel'
          description: Volume percentage pricing details
          nullable: true
      required:
        - billing_direction
        - charge_on_contract_start
        - created_at
        - currency
        - fee_type
        - id
        - product
        - product_id
        - type
        - updated_at
      type: object
    Discount:
      properties:
        amount:
          description: Discount amount
          type: string
        discount_type:
          description: Type of discount
          enum:
            - percentage
            - fixed
          type: string
        duration_type:
          description: Duration type
          enum:
            - monthly_rolling
            - fixed
          type: string
        duration_unit:
          description: Duration unit (required if duration_type is fixed)
          nullable: true
          type: string
        duration_value:
          description: Duration value (required if duration_type is fixed)
          format: int64
          nullable: true
          type: integer
      required:
        - amount
        - discount_type
        - duration_type
      type: object
    ExpressionPricingModel:
      properties:
        charges:
          description: Expression-based charges
          items:
            $ref: '#/components/schemas/ExpressionCharge'
          type: array
        metric_bindings:
          description: Alias-to-metric bindings referenced in expressions
          items:
            $ref: '#/components/schemas/MetricBinding'
          type: array
      required:
        - charges
      type: object
    FixedPricingModel:
      properties:
        price_per_unit:
          description: Price per unit
          type: string
        total:
          description: Total price
          type: string
        units:
          description: Number of units
          format: int64
          type: integer
      required:
        - price_per_unit
        - total
        - units
      type: object
    GraduatedPercentagePricingModel:
      properties:
        tiers:
          description: Pricing tiers
          items:
            $ref: '#/components/schemas/GraduatedTier'
          type: array
      required:
        - tiers
      type: object
    GraduatedTieredPricingModel:
      properties:
        tiers:
          description: Pricing tiers
          items:
            $ref: '#/components/schemas/PricingTier'
          type: array
        units:
          description: Upfront units for fixed products
          format: int64
          nullable: true
          type: integer
      required:
        - tiers
      type: object
    SpendingThreshold:
      properties:
        amount:
          description: Threshold amount
          type: string
        period:
          description: Period for the threshold
          type: string
      required:
        - amount
        - period
      type: object
    PrepaidFixedTieredPricingModel:
      properties:
        overages_charge_interval:
          description: Interval for charging overages
          type: string
        prepaid_units:
          description: Number of prepaid units
          format: int64
          type: integer
        tiers:
          description: Pricing tiers
          items:
            $ref: '#/components/schemas/PricingTier'
          type: array
      required:
        - overages_charge_interval
        - prepaid_units
        - tiers
      type: object
    PrepaidTieredPricingModel:
      properties:
        prepaid_units:
          description: Number of prepaid units
          format: int64
          type: integer
        tiers:
          description: Pricing tiers
          items:
            $ref: '#/components/schemas/PricingTier'
          type: array
      required:
        - prepaid_units
        - tiers
      type: object
    PriceProductResponse:
      properties:
        billing_frequency:
          description: Billing frequency
          enum:
            - recurring
            - one-off
          nullable: true
          type: string
        description:
          description: Product description
          type: string
        fee_type:
          description: Product fee type
          enum:
            - fixed
            - metered
          example: fixed
          type: string
        id:
          description: Product identifier
          type: string
        metric_ids:
          description: Associated metric identifiers
          items:
            type: string
          type: array
        name:
          description: Product name
          example: Platform Fee
          type: string
        payment_terms:
          description: Payment terms
          enum:
            - advance
            - arrears
          example: arrears
          type: string
      required:
        - description
        - fee_type
        - id
        - name
        - payment_terms
      type: object
    TieredPercentagePricingModel:
      properties:
        tiers:
          description: Pricing tiers
          items:
            $ref: '#/components/schemas/GraduatedTier'
          type: array
      required:
        - tiers
      type: object
    TieredPricingModel:
      properties:
        tiers:
          description: Pricing tiers
          items:
            $ref: '#/components/schemas/PricingTier'
          type: array
        units:
          description: Upfront units for fixed products
          format: int64
          nullable: true
          type: integer
      required:
        - tiers
      type: object
    UnitPricingModel:
      properties:
        price_per_unit:
          description: Price per unit
          type: string
      required:
        - price_per_unit
      type: object
    VolumePercentagePricingModel:
      properties:
        fixed_fee:
          description: Optional fixed fee
          nullable: true
          type: string
        percentage:
          description: Percentage rate
          type: string
        price_per_unit:
          description: Price per unit
          type: string
      required:
        - percentage
        - price_per_unit
      type: object
    ExpressionCharge:
      properties:
        billing_direction:
          description: Billing direction
          enum:
            - advance
            - arrears
          type: string
        description:
          description: Charge description
          type: string
        quantity_expression:
          description: Expression for calculating quantity
          type: string
        unit_price_expression:
          description: Expression for calculating unit price
          type: string
      required:
        - billing_direction
        - description
        - quantity_expression
        - unit_price_expression
      type: object
    MetricBinding:
      properties:
        alias:
          description: Alias referenced in charge expressions
          example: api_calls
          type: string
        metric_id:
          description: Metric ID bound to the alias
          type: string
      required:
        - alias
        - metric_id
      type: object
    GraduatedTier:
      properties:
        fixed_fee:
          description: Fixed fee for this tier
          nullable: true
          type: string
        max_units:
          description: Maximum units for this tier
          format: int64
          nullable: true
          type: integer
        min_units:
          description: Minimum units for this tier
          format: int64
          type: integer
        percentage:
          description: Percentage for this tier
          nullable: true
          type: string
      required:
        - min_units
      type: object
    PricingTier:
      properties:
        fixed_fee:
          description: Fixed fee for this tier
          nullable: true
          type: string
        max_units:
          description: Maximum units for this tier
          format: int64
          nullable: true
          type: integer
        min_units:
          description: Minimum units for this tier
          format: int64
          type: integer
        price_per_unit:
          description: Price per unit in this tier
          nullable: true
          type: string
      required:
        - min_units
      type: object
  securitySchemes:
    bearerAuth:
      bearerFormat: API Key
      description: API key authentication. Pass your API key as a Bearer token.
      scheme: bearer
      type: http

````