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

# Get Product Offering

> Retrieves the public pricing details for a specific product, including all eligible plans, localized pricing, and the customer's current subscription state. Use this to render a pricing page or paywall scoped to a product.

<Info>Click the base URL in the API playground and select the **Sandbox** host for test data or the **Production** host for live data. Use credentials from the same environment.</Info>


## OpenAPI

````yaml /api-reference/openapi.json get /monetization/product-offering/{product_id}/
openapi: 3.0.0
info:
  title: kelviq API
  version: 1.0.0
  description: >-
    API for interacting with kelviq services, derived from Python SDK
    documentation.
servers:
  - url: https://sandboxapi.kelviq.com/api/v1
    description: Sandbox — Test payments
  - url: https://api.kelviq.com/api/v1
    description: Production — Live payments
security:
  - bearerAuth: []
tags:
  - name: Products
    description: Catalog products.
  - name: Product Settings
    description: Per-product settings (currency, VPN/Tor/proxy, product URL).
  - name: Product Files
    description: Product images and downloadable assets.
  - name: Features
    description: Catalog features that can be granted as plan entitlements.
  - name: Plans
    description: Catalog plans (CRUD, publish, versions, prices).
  - name: Plan Entitlements
    description: Feature entitlements attached to a plan.
  - name: Plan Files
    description: Files attached to plans, and signed download links.
  - name: Media
    description: Generate presigned S3 upload URLs for product/plan images and files.
  - name: Partner
    description: Partner integration APIs (organization provisioning, lookup).
  - name: Charges
    description: >-
      One-time payments charged immediately against a customer's default payment
      method.
  - name: Refunds
    description: Full and partial refunds for paid orders.
  - name: Payment Methods
    description: Saved customer payment methods (cards, etc.).
paths:
  /monetization/product-offering/{product_id}/:
    get:
      tags:
        - Monetization
      summary: Get Product Offering
      description: >-
        Retrieves the public pricing details for a specific product, including
        all eligible plans, localized pricing, and the customer's current
        subscription state. Use this to render a pricing page or paywall scoped
        to a product.
      operationId: getProductOffering
      parameters:
        - name: product_id
          in: path
          required: true
          description: The unique identifier (UUID) of the product.
          schema:
            type: string
            format: uuid
        - name: customer_id
          in: query
          required: false
          description: >-
            Optional. Your customer's ID. When provided, the response includes
            the customer's active subscription details and the
            `isCustomerExists` flag.
          schema:
            type: string
        - name: plans_enabled
          in: query
          required: false
          description: >-
            Optional. Comma-separated list of plan identifiers to include in the
            response. When omitted, all active plans for the product are
            returned. Example: `plans_enabled=pro,enterprise`
          schema:
            type: string
          example: pro,enterprise
        - name: ip_address
          in: query
          required: false
          description: >-
            Optional. The end customer's IP address, used to determine pricing
            locale and currency based on their location. Only applied when
            authenticating with a server API key.
          schema:
            type: string
          example: 203.0.113.42
      responses:
        '200':
          description: Successful response with product offering details.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ProductOfferingResponse'
              example:
                organizationId: 6
                countryCode: US
                pricingLocale: en-US
                currencyCode: USD
                currencySymbol: $
                currencyConversionRate: 1
                baseCurrencyCode: USD
                baseCurrencySymbol: $
                plans:
                  - name: iBase
                    description: ''
                    identifier: i-base
                    details: {}
                    isVisible: true
                    metadata: {}
                    basePlan: null
                    price:
                      id: 43856a3d-255c-4f60-a17d-98e1d113bb98
                      priceType: PAID
                      freeTrial: false
                      trialPeriod: 7
                      currency: USD
                      enabled: true
                      charges:
                        - id: 6bc6e8f7-5c52-48ae-b75b-0c652dddceb8
                          chargePeriod: MONTHLY
                          tiers: []
                          priceData:
                            amount: 19
                          details: {}
                          advanced: {}
                          featureQuantityPrice: 19
                        - id: d3ca0fb6-d478-424d-8621-56d1e15073bd
                          chargePeriod: YEARLY
                          tiers: []
                          priceData:
                            amount: 190
                          details: {}
                          advanced: {}
                          featureQuantityPrice: 190
                    originalPrice:
                      MONTHLY: 19
                      YEARLY: 190
                    features: []
                    shouldHighlight: false
                    enabled: true
                    displayName: iBase
                    displayDescription: ''
                    includes: ''
                  - name: iStandard
                    description: ''
                    identifier: i-standard
                    details: {}
                    isVisible: true
                    metadata: {}
                    basePlan: null
                    price:
                      id: 61f11451-5aed-4534-9c4c-44e0c47810a6
                      priceType: PAID
                      freeTrial: false
                      trialPeriod: 7
                      currency: USD
                      enabled: true
                      charges:
                        - id: 4762b0c0-89b4-4f16-9779-ecd871d98a4e
                          chargePeriod: MONTHLY
                          tiers: []
                          priceData:
                            amount: 39
                          details: {}
                          advanced: {}
                          featureQuantityPrice: 39
                        - id: dfc2e342-317c-4d0c-bbf5-c1db43f63a42
                          chargePeriod: YEARLY
                          tiers: []
                          priceData:
                            amount: 390
                          details: {}
                          advanced: {}
                          featureQuantityPrice: 390
                    originalPrice:
                      MONTHLY: 39
                      YEARLY: 390
                    features: []
                    shouldHighlight: false
                    enabled: true
                    displayName: iStandard
                    displayDescription: ''
                    includes: ''
                  - name: iPremium
                    description: ''
                    identifier: i-premium
                    details: {}
                    isVisible: true
                    metadata: {}
                    basePlan: null
                    price:
                      id: 3b523320-ad1a-4922-b3e0-d504660e4747
                      priceType: PAID
                      freeTrial: false
                      trialPeriod: 7
                      currency: USD
                      enabled: true
                      charges:
                        - id: 7a1f0b92-f49a-419b-8845-9b7f7706c566
                          chargePeriod: MONTHLY
                          tiers: []
                          priceData:
                            amount: 59
                          details: {}
                          advanced: {}
                          featureQuantityPrice: 59
                        - id: 453c2a16-33dc-4585-8876-63b59504d8b5
                          chargePeriod: YEARLY
                          tiers: []
                          priceData:
                            amount: 590
                          details: {}
                          advanced: {}
                          featureQuantityPrice: 590
                    originalPrice:
                      MONTHLY: 59
                      YEARLY: 590
                    features: []
                    shouldHighlight: false
                    enabled: true
                    displayName: iPremium
                    displayDescription: ''
                    includes: ''
                  - name: freepaln
                    description: ''
                    identifier: freepaln
                    details: {}
                    isVisible: true
                    metadata: {}
                    basePlan: null
                    price:
                      id: fc5b3277-474e-49d3-8dcf-edd9e46c5bab
                      priceType: FREE
                      freeTrial: false
                      trialPeriod: 0
                      currency: USD
                      enabled: true
                      charges:
                        - id: a9262eb9-447e-4d87-a781-8502432f1dbf
                          chargePeriod: ONE_TIME
                          tiers: []
                          priceData:
                            amount: 0
                          details: {}
                          advanced: {}
                          featureQuantityPrice: 0
                    originalPrice:
                      ONE_TIME: 0
                    features: []
                    shouldHighlight: false
                    enabled: true
                    displayName: freepaln
                    displayDescription: ''
                    includes: ''
                  - name: iUltra
                    description: ''
                    identifier: i-ultra
                    details: {}
                    isVisible: true
                    metadata: {}
                    basePlan: null
                    price:
                      id: 28d8dd6e-e864-4188-958a-f16c9b4a5ae6
                      priceType: PAID
                      freeTrial: true
                      trialPeriod: 7
                      currency: USD
                      enabled: true
                      charges:
                        - id: 7195b8ec-1262-413c-a84a-217427d0fdcc
                          chargePeriod: MONTHLY
                          tiers: []
                          priceData:
                            amount: 20
                          details: {}
                          advanced: {}
                          featureQuantityPrice: 20
                        - id: d4d6be26-dc10-40bb-9555-6db6985af8a4
                          chargePeriod: YEARLY
                          tiers: []
                          priceData:
                            amount: 230
                          details: {}
                          advanced: {}
                          featureQuantityPrice: 230
                    originalPrice:
                      MONTHLY: 20
                      YEARLY: 230
                    features: []
                    shouldHighlight: false
                    enabled: true
                    displayName: iUltra
                    displayDescription: ''
                    includes: ''
                subscription:
                  hasPreviousSubscription: false
                isCustomerExists: false
                billingPeriods:
                  - chargePeriod: ONE_TIME
                    enabled: true
                    displayName: One Time
                    promoCaption: ''
                    defaultSelected: false
                  - chargePeriod: MONTHLY
                    enabled: true
                    displayName: Monthly
                    promoCaption: ''
                    defaultSelected: false
                  - chargePeriod: YEARLY
                    enabled: true
                    displayName: Yearly
                    promoCaption: ''
                    defaultSelected: false
        '404':
          description: Product not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
              example:
                status: Not found
                message: Product does not exist
components:
  schemas:
    ProductOfferingResponse:
      type: object
      properties:
        organizationId:
          type: integer
          description: The internal ID of the organization that owns this product.
        countryCode:
          type: string
          description: ISO 3166-1 alpha-2 country code resolved from the request.
        pricingLocale:
          type: string
          description: BCP 47 locale tag used for price formatting (e.g. "en-US").
        currencyCode:
          type: string
          description: ISO 4217 currency code for the resolved locale (e.g. "USD").
        currencySymbol:
          type: string
        currencyConversionRate:
          type: number
          description: Conversion rate from the base currency to the resolved currency.
        baseCurrencyCode:
          type: string
        baseCurrencySymbol:
          type: string
        plans:
          type: array
          items:
            $ref: '#/components/schemas/ProductPlan'
        subscription:
          type: object
          properties:
            hasPreviousSubscription:
              type: boolean
            planIdentifier:
              type: string
              nullable: true
            subscriptionId:
              type: string
              format: uuid
              nullable: true
            chargePeriod:
              type: string
              nullable: true
        isCustomerExists:
          type: boolean
        billingPeriods:
          type: array
          items:
            $ref: '#/components/schemas/BillingPeriod'
    ErrorResponse:
      type: object
      properties:
        status:
          type: string
          description: A status description for the error.
          example: Bad request
        message:
          type: string
          description: A human-readable message providing details about the error.
          example: Offering does not exists
    ProductPlan:
      type: object
      properties:
        name:
          type: string
        description:
          type: string
        identifier:
          type: string
        details:
          type: object
        isVisible:
          type: boolean
        metadata:
          type: object
        basePlan:
          nullable: true
        price:
          $ref: '#/components/schemas/FeaturePrice'
        originalPrice:
          type: object
          description: >-
            Map of chargePeriod to base price amount (e.g. {"MONTHLY": 19.0,
            "YEARLY": 190.0}).
        features:
          type: array
          items: {}
        shouldHighlight:
          type: boolean
        enabled:
          type: boolean
        displayName:
          type: string
        displayDescription:
          type: string
        includes:
          type: string
    BillingPeriod:
      type: object
      properties:
        enabled:
          type: boolean
        displayName:
          type: string
        chargePeriod:
          type: string
        promoCaption:
          type: string
    FeaturePrice:
      type: object
      properties:
        id:
          type: string
          format: uuid
        priceType:
          type: string
        freeTrial:
          type: boolean
        trialPeriod:
          type: integer
        currency:
          type: string
        charges:
          type: array
          items:
            $ref: '#/components/schemas/Charge'
    Charge:
      type: object
      properties:
        id:
          type: string
          format: uuid
        chargePeriod:
          type: string
        tiers:
          type: array
          items: {}
        priceData:
          type: object
        details:
          type: object
        advanced:
          type: object
        featureQuantityPrice:
          type: number
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: >-
        The Server API Key obtained from the kelviq application. Pass as a
        Bearer token in the Authorization header. Example: 'Authorization:
        Bearer __YOUR_API_KEY__'

````