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

# Get Product

> Retrieve a single product by ID for the authenticated organization.

Authenticate with an API key using Bearer token authentication.

When available, the response includes generated Agentic Commerce Optimization (ACO) data:

- Profile metadata and FAQs
- Localization content and cultural notes
- Intent queries and signals
- Sources and claims

A parent product returns its variants in `variants`, with each variant's option values, price, stock, image, and marketplace listings.



## OpenAPI

````yaml /openapi.json get /api/v1/products/{productId}
openapi: 3.1.0
info:
  title: OmniCommerce API
  version: 1.0.0
  license:
    name: Proprietary
    url: https://omnicommerce.sg/terms
  description: >-
    OmniCommerce API surface for agents and developer integrations. Includes
    public endpoints (merchant discovery, product search, compare, catalog, ACO
    retrieval) and authenticated endpoints (product management via API key
    Bearer tokens).
servers:
  - url: https://omnicommerce.sg
    description: Production
  - url: http://localhost:3000
    description: Local development
security: []
tags:
  - name: agentic-checkout
    description: Merchant-fulfilled agentic checkout
    x-group: Agentic Checkout
  - name: agents
    description: agents
    x-group: Agents
  - name: analytics
    description: Sales performance across marketplaces
    x-group: Analytics
  - name: aops
    description: Agent operating procedures
    x-group: AOPs
  - name: campaigns
    description: Campaign briefs, offer windows, and marketplace runs
    x-group: Campaigns
  - name: developer-platform
    description: Authenticated developer platform APIs
    x-group: Developer Platform
  - name: documents
    description: Knowledge base document uploads
    x-group: Knowledge Base
  - name: looks
    description: AI-styled product looks
    x-group: Looks
  - name: oauth
    description: OAuth token endpoints
    x-group: OAuth
  - name: orders
    description: Workspace and agentic orders
    x-group: Orders
  - name: organizations
    description: Organization management
    x-group: Organizations
  - name: price-books
    description: Marketplace list-price markup rules
    x-group: Price Books
  - name: products
    description: Product CRUD, bulk import, enrichment, publish, and delist
    x-group: Products
  - name: promotions
    description: Central promotions and marketplace sync
    x-group: Promotions
  - name: public-agent
    description: Public agent discovery and catalog APIs
    x-group: Public Agent
  - name: returns
    description: returns
    x-group: Returns
  - name: reviews
    description: Marketplace product reviews and seller replies
    x-group: Reviews
  - name: settlements
    description: settlements
    x-group: Settlements
  - name: ucp
    description: Universal Commerce Protocol
    x-group: UCP
paths:
  /api/v1/products/{productId}:
    get:
      tags:
        - products
      summary: Get Product
      description: >-
        Retrieve a single product by ID for the authenticated organization.


        Authenticate with an API key using Bearer token authentication.


        When available, the response includes generated Agentic Commerce
        Optimization (ACO) data:


        - Profile metadata and FAQs

        - Localization content and cultural notes

        - Intent queries and signals

        - Sources and claims


        A parent product returns its variants in `variants`, with each variant's
        option values, price, stock, image, and marketplace listings.
      operationId: get_v1_products_by_productid
      parameters:
        - name: productId
          in: path
          required: true
          schema:
            type: string
      responses:
        '200':
          description: Success
          content:
            application/json:
              schema:
                type: object
                properties:
                  id:
                    type: string
                  parentId:
                    type:
                      - string
                      - 'null'
                  name:
                    type: string
                  description:
                    type: string
                  sku:
                    type: string
                  brand:
                    type:
                      - string
                      - 'null'
                  price:
                    type:
                      - number
                      - 'null'
                  currency:
                    type: string
                  status:
                    type: string
                  statusFacets:
                    type: object
                    description: >-
                      Read-only product-wide state. Lifecycle status and derived
                      quality/error signals are independent; this field is
                      recalculated from current product, marketplace QC, and
                      review flags.
                    required:
                      - lifecycle
                      - derived
                    properties:
                      lifecycle:
                        type: string
                        enum:
                          - draft
                          - active
                          - archived
                          - deleted
                          - unknown
                      derived:
                        type: array
                        items:
                          type: string
                          enum:
                            - flagged
                            - errors
                            - qc_pending
                            - qc_rejected
                      zaloraQualityControl:
                        type: object
                  images:
                    type: array
                    items:
                      type: object
                  excludedImages:
                    type: array
                    description: >-
                      Import image exclusions, with original source URLs,
                      classification tags, matching filters, and reasons. Empty
                      when no exclusion audit was saved.
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                          format: uri
                        sourceUrl:
                          type: string
                          format: uri
                        position:
                          type: integer
                          minimum: 0
                          maximum: 9007199254740991
                        imageTagId:
                          type: string
                        imageTags:
                          type: array
                          items:
                            type: string
                        matchedExcludedTags:
                          type: array
                          items:
                            type: string
                        reason:
                          type: string
                          enum:
                            - excluded_tag
                            - size_chart
                            - gallery_limit
                            - non_product_asset
                            - mirror_unavailable
                      required:
                        - url
                        - sourceUrl
                        - position
                        - imageTags
                        - matchedExcludedTags
                        - reason
                      additionalProperties: false
                  highlights:
                    type:
                      - array
                      - 'null'
                    items:
                      type: string
                  marketplaces:
                    type: object
                  inventory:
                    type: object
                  weight:
                    type:
                      - number
                      - 'null'
                  dimensions:
                    type:
                      - object
                      - 'null'
                  seoTitle:
                    type:
                      - string
                      - 'null'
                  seoDescription:
                    type:
                      - string
                      - 'null'
                  tags:
                    type:
                      - array
                      - 'null'
                    items:
                      type: string
                  bundle:
                    type:
                      - object
                      - 'null'
                  acoProfile:
                    type:
                      - object
                      - 'null'
                    description: >-
                      Current ACO/GEO profile metadata for the product. Null
                      when no profile has been generated.
                    properties:
                      profileId:
                        type: string
                      productId:
                        type: string
                      readinessScore:
                        type:
                          - number
                          - 'null'
                      intentSummary:
                        type: string
                      generatedAt:
                        type:
                          - string
                          - 'null'
                        description: ISO 8601 timestamp
                      updatedAt:
                        type:
                          - string
                          - 'null'
                        description: ISO 8601 timestamp
                      platformScope:
                        type: array
                        items:
                          type: string
                      countryScope:
                        type: array
                        description: Country hints associated with the current ACO profile.
                        items:
                          type: string
                      generationVersion:
                        type:
                          - string
                          - 'null'
                      scoringVersion:
                        type:
                          - string
                          - 'null'
                      localizationVersion:
                        type:
                          - string
                          - 'null'
                      promptVersion:
                        type:
                          - string
                          - 'null'
                      ontologyVersion:
                        type:
                          - string
                          - 'null'
                      warnings:
                        type: array
                        items:
                          type: string
                      seasonalRelevance:
                        type: object
                      compliance:
                        type: object
                      trust:
                        type: object
                      categoryAttributes:
                        type: object
                  acoFaqs:
                    type: array
                    description: >-
                      Generated Agentic Commerce Optimization FAQs for the
                      product, ordered by language then rank. Empty array when
                      no ACO profile has been generated yet.
                    items:
                      type: object
                      properties:
                        question:
                          type: string
                        answer:
                          type: string
                        language:
                          type:
                            - string
                            - 'null'
                          description: ISO 639-1 language code (en, th, id, ms, vi, tl).
                        intentKey:
                          type:
                            - string
                            - 'null'
                          description: >-
                            Intent ontology key (e.g., capable_of,
                            suitable_for_context, used_for_audience,
                            compliance_flag).
                        rank:
                          type:
                            - integer
                            - 'null'
                          description: >-
                            Rank within the language group. Lower is more
                            prominent.
                        confidence:
                          type:
                            - number
                            - 'null'
                          description: Generator confidence, 0..1.
                        evidenceKeys:
                          type: array
                          items:
                            type: string
                        citationUrls:
                          type: array
                          items:
                            type: string
                      required:
                        - question
                        - answer
                  acoLocalizations:
                    type: array
                    description: >-
                      Localized ACO content by language, including intent
                      descriptions, generated buyer intent queries, and cultural
                      notes.
                    items:
                      type: object
                      properties:
                        profileId:
                          type: string
                        language:
                          type: string
                        intentDescription:
                          type: string
                        intentQueries:
                          type: array
                          items:
                            type: string
                        countries:
                          type: array
                          description: >-
                            Country hints this localization and cultural note
                            applies to.
                          items:
                            type: string
                        culturalNotes:
                          type: object
                      required:
                        - language
                        - intentDescription
                  acoSignals:
                    type: array
                    description: >-
                      Normalized ACO retrieval and ranking signals extracted
                      from the product profile.
                    items:
                      type: object
                      properties:
                        profileId:
                          type: string
                        key:
                          type: string
                        display:
                          type: string
                        normalized:
                          type: string
                        country:
                          type:
                            - string
                            - 'null'
                        language:
                          type:
                            - string
                            - 'null'
                        source:
                          type: string
                        attributeClass:
                          type:
                            - string
                            - 'null'
                  acoIntentQueries:
                    type: array
                    description: >-
                      Deduplicated buyer intent queries aggregated from all ACO
                      localizations.
                    items:
                      type: string
                  acoCulturalNotes:
                    type: object
                    description: >-
                      Cultural notes keyed by `language:country` (example:
                      `en:sg`). Uses `global` when no country scope is known.
                    additionalProperties:
                      type: object
                      properties:
                        language:
                          type: string
                        country:
                          type: string
                        notes:
                          type: object
                      required:
                        - language
                        - country
                        - notes
                  acoSources:
                    type: array
                    description: Citation/source records used by ACO trust enrichment.
                    items:
                      type: object
                      properties:
                        url:
                          type: string
                        label:
                          type:
                            - string
                            - 'null'
                        metadata:
                          type: object
                        createdAt:
                          type:
                            - string
                            - 'null'
                  acoClaims:
                    type: array
                    description: >-
                      Trust claims and citation URLs associated with the
                      generated ACO profile.
                    items:
                      type: object
                      properties:
                        fieldPath:
                          type: string
                        text:
                          type: string
                        isFactual:
                          type: boolean
                        status:
                          type:
                            - string
                            - 'null'
                        citationUrls:
                          type: array
                          items:
                            type: string
                  createdAt:
                    type: string
                    description: ISO 8601 timestamp
                  updatedAt:
                    type: string
                    description: ISO 8601 timestamp
                  variants:
                    type: array
                    description: >-
                      The product's non-deleted variants, oldest first, in the
                      same row shape as `GET /api/v1/products` items. Empty for
                      a simple product and when the requested product is itself
                      a variant.
                    items:
                      allOf:
                        - type: object
                          required:
                            - id
                            - name
                            - sku
                            - parentId
                            - isVariant
                            - stockQuantity
                            - variantCount
                          properties:
                            id:
                              type: string
                              format: uuid
                            name:
                              type: string
                            sku:
                              type:
                                - string
                                - 'null'
                            parentId:
                              type:
                                - string
                                - 'null'
                              format: uuid
                            isVariant:
                              type: boolean
                            stockQuantity:
                              type:
                                - integer
                                - 'null'
                              minimum: 0
                              description: >-
                                Catalog stock in whole units, matching the
                                Products page. Parent rows aggregate non-deleted
                                variants in the same organization; virtual
                                bundles derive stock from components and any
                                manual cap. Null means unknown: never substitute
                                zero for missing or null stock. This is not a
                                sum of marketplace inventory mirrors or a
                                per-location available-to-promise balance.
                            variantCount:
                              type: integer
                              minimum: 0
                              description: >-
                                Number of non-deleted variants; greater than 0
                                means the product has variants. A parent row's
                                stockQuantity already includes their stock. Read
                                the variants themselves from `GET
                                /api/v1/products/{productId}`.
                            status:
                              type: string
                            statusFacets:
                              type: object
                              description: >-
                                Read-only product-wide state. Lifecycle status
                                and derived quality/error signals are
                                independent; this field is recalculated from
                                current product, marketplace QC, and review
                                flags.
                              required:
                                - lifecycle
                                - derived
                              properties:
                                lifecycle:
                                  type: string
                                  enum:
                                    - draft
                                    - active
                                    - archived
                                    - deleted
                                    - unknown
                                derived:
                                  type: array
                                  items:
                                    type: string
                                    enum:
                                      - flagged
                                      - errors
                                      - qc_pending
                                      - qc_rejected
                                zaloraQualityControl:
                                  type: object
                        - type: object
                          properties:
                            variationAttributes:
                              type:
                                - object
                                - 'null'
                              additionalProperties:
                                type: string
                              description: >-
                                Option values that identify the variant, for
                                example `{ "Color": "Navy", "Size": "M" }`.
                            price:
                              type:
                                - number
                                - 'null'
                              minimum: 0
                            salePrice:
                              type:
                                - number
                                - 'null'
                              minimum: 0
                            priceLabel:
                              type: string
                              description: Price formatted with the product currency.
                            imageUrl:
                              type:
                                - string
                                - 'null'
                              description: >-
                                The variant's own image, falling back to the
                                parent product image.
                            imageUrls:
                              type: array
                              items:
                                type: string
                            marketplaces:
                              type: array
                              description: >-
                                The variant's listing on each connected
                                marketplace.
                              items:
                                type: object
                                properties:
                                  marketplace:
                                    type: string
                                  country:
                                    type:
                                      - string
                                      - 'null'
                                  storeId:
                                    type:
                                      - string
                                      - 'null'
                                  storeLabel:
                                    type:
                                      - string
                                      - 'null'
                                  published:
                                    type: boolean
                                  itemId:
                                    type:
                                      - string
                                      - 'null'
                                  listingUrl:
                                    type:
                                      - string
                                      - 'null'
                required:
                  - variants
        '401':
          description: Unauthorized - Invalid or missing Bearer token
        '403':
          description: Forbidden - Token not authorized for this organization
        '404':
          description: Product not found
        '500':
          description: Internal Server Error
      security:
        - bearerAuth: []
components:
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        Bearer API key for server-to-server access. Session auth is also
        supported in first-party UI flows.

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.