---
title: "Get product by ID"
url: "https://developers.zinnia.com/apis/product-service/versions/22f4da0f-1e2d-480a-b682-ea9a0819b47f/operations/getProductById"
---

> Full API specification: https://developers.zinnia.com/apis/product-service/versions/22f4da0f-1e2d-480a-b682-ea9a0819b47f.md

# Get product by ID

`GET` `/product/v2/products/{productId}`

Operation ID: `getProductById`

Retrieves a single product by its UUID

## Path parameters

- `productId` (string, required) - Unique product identifier (UUID)

## Responses

- `200` - Product found
- `400` - Bad request - Invalid ProductId
- `404` - Product not found
- `500` - Server error

## OpenAPI definition

```yaml
openapi: 3.0.0
info:
  title: Zinnia Product Service
  version: 0.1.0
servers:
  - url: https://uat.api.zinnia.io
paths:
  /product/v2/products/{productId}:
    get:
      operationId: getProductById
      summary: Get product by ID
      description: Retrieves a single product by its UUID
      parameters:
        - name: productId
          required: true
          in: path
          description: Unique product identifier (UUID)
          schema:
            type: string
      responses:
        "200":
          description: Product found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ProductV2Model"
        "400":
          description: Bad request - Invalid ProductId
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "404":
          description: Product not found
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
        "500":
          description: Server error
          content:
            application/json:
              schema:
                $ref: "#/components/schemas/ErrorResponse"
      tags:
        - Product V2
      security:
        - Auth0: []
security:
  - Auth0: []
components:
  schemas:
    ProductV2Model:
      type: object
      properties:
        id:
          type: string
          description: System-generated unique identifier (UUID)
          example: 7b9f2b65-1b4a-4f4c-9d9d-6a7f5b6d9b1a
        carrierCode:
          type: string
          description: Unique carrier code
          example: EVGL
        carrierName:
          type: string
          description: Carrier name
          example: Everglades
        cusip:
          type: string
          description: CUSIP identifier (9 characters)
          example: 1234567AB
          nullable: true
        productName:
          type: string
          description: Primary product name
          example: Term Life 20
        marketingName:
          type: string
          description: Marketing name for the product
          example: Everglades Term 20
        legalName:
          type: string
          description: Full legal name of the product
          example: Everglades Term Life Insurance – 20 Year Level Premium
        version:
          type: string
          description: Version identifier
          example: "1.0"
        versionStartDate:
          type: string
          description: Version start date
          example: 2025-01-01
        versionEndDate:
          type: string
          description: Version end date
          example: 2099-01-01
        line:
          type: string
          description: Product line classification
          enum:
            - LIFE
            - ANNUITY
          example: LIFE
        type:
          type: string
          description: Product type
          enum:
            - TERM
            - UNIVERSAL_LIFE
          example: TERM
        planCode:
          type: string
          description: Plan code
          example: EVGUL001
        availableToSell:
          type: boolean
          description: Whether the product is available to sell at product level
          example: true
        distributors:
          description: List of distributors authorized to sell this product
          nullable: true
          type: array
          items:
            $ref: "#/components/schemas/Distributor"
        stateAvailability:
          description: State-level availability records
          type: array
          items:
            $ref: "#/components/schemas/StateAvailability"
      required:
        - id
        - carrierCode
        - carrierName
        - productName
        - marketingName
        - legalName
        - version
        - versionStartDate
        - versionEndDate
        - line
        - type
        - planCode
        - availableToSell
        - stateAvailability
    ErrorResponse:
      type: object
      properties:
        message:
          type: string
          description: Human-readable error description
          example: Invalid orderByDirection. Must be "ASC" or "DESC".
        timestamp:
          type: string
          description: ISO 8601 formatted timestamp of the error occurrence
          example: 2025-12-09T16:03:00Z
      required:
        - message
        - timestamp
    Distributor:
      type: object
      properties:
        distributorCode:
          type: string
          description: Unique distributor code
          example: EVGL
        distributorName:
          type: string
          description: Distributor name
          example: Everglades Distribution
        startDate:
          type: string
          description: Start date of distributor authorization
          example: 2025-01-01
        endDate:
          type: string
          description: End date of distributor authorization
          example: 2099-01-01
      required:
        - distributorCode
        - distributorName
        - startDate
        - endDate
    StateAvailability:
      type: object
      properties:
        availableToSell:
          type: boolean
          description: Indicates whether the product is available to sell in this state
          example: true
        startDate:
          type: string
          description: Start date of state availability (inclusive)
          example: 2025-01-01
        endDate:
          type: string
          description: End date of state availability
          example: 2099-01-01
        abbreviation:
          type: string
          description: Two-letter state abbreviation
          example: NY
          minLength: 2
          maxLength: 2
        name:
          type: string
          description: Full state name
          example: New York
  securitySchemes:
    Auth0:
      type: openIdConnect
      openIdConnectUrl: https://login.uat.zinnia.com/.well-known/openid-configuration
      x-kong-security-openid-connect:
        config:
          run_on_preflight: true
          scopes_claim:
            - https://uat.api.zinnia.io/permissions
          audience_claim:
            - aud
          audience_required:
            - https://uat.api.zinnia.io
          auth_methods:
            - bearer
          scopes: []
        enabled: true
        protocols:
          - grpc
          - grpcs
          - http
          - https
```
