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

# Get Product

> Get one product's detail over a date range: headline metrics (visibility, win_rate, avg_position, avg_rating, mention_count) plus a delta for each against the immediately preceding equal-length period, the catalog metadata (brand, description, image, source, first-seen date), the effective price range with any overrides, and the median AI-mention price. Visibility is divided by the product's relevant-prompt chats, not all shopping chats. avg_rating is the mean 0–5 star rating across the product's AI mentions (null when none carried a rating). Returns data: null when the product is not in the project.



## OpenAPI

````yaml https://api.peec.ai/customer/v1/openapi/json post /products/detail
openapi: 3.0.3
info:
  title: Peec AI Customer API
  description: Development documentation
  version: 1.0.0
  contact:
    name: Peec AI Team
    email: support@peec.ai
servers:
  - url: https://api.peec.ai/customer/v1
security: []
paths:
  /products/detail:
    post:
      tags:
        - Products
      summary: Get Product
      description: >-
        Get one product's detail over a date range: headline metrics
        (visibility, win_rate, avg_position, avg_rating, mention_count) plus a
        delta for each against the immediately preceding equal-length period,
        the catalog metadata (brand, description, image, source, first-seen
        date), the effective price range with any overrides, and the median
        AI-mention price. Visibility is divided by the product's relevant-prompt
        chats, not all shopping chats. avg_rating is the mean 0–5 star rating
        across the product's AI mentions (null when none carried a rating).
        Returns data: null when the product is not in the project.
      operationId: postProductsDetail
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              properties:
                project_id:
                  description: Required if using a company api key
                  example: or_f45b94ba-5e35-4982-93ed-285e72ee14eb
                  type: string
                product_id:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                start_date:
                  default: '2026-01-01'
                  description: >-
                    full-date notation as defined by RFC 3339, section 5.6, for
                    example, 2017-07-21
                  example: '2025-09-22'
                  type: string
                  format: date
                  pattern: >-
                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                end_date:
                  default: '2026-01-01'
                  description: >-
                    full-date notation as defined by RFC 3339, section 5.6, for
                    example, 2017-07-21
                  example: '2025-09-22'
                  type: string
                  format: date
                  pattern: >-
                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                country_codes:
                  type: array
                  items:
                    type: string
                model_channel_ids:
                  type: array
                  items:
                    type: string
                merchant_ids:
                  description: >-
                    Scope the response to chats where this product is sold
                    through one of these merchants — the per-merchant view of
                    rating, price, and mentions. The QFO breakdowns scope
                    through those chats too; only the visibility denominator
                    stays merchant-free.
                  type: array
                  items:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                topic_ids:
                  type: array
                  items:
                    type: string
                tag_ids:
                  type: array
                  items:
                    type: string
                tag_operator:
                  type: string
                  enum:
                    - and
                    - or
                chat_scope:
                  description: >-
                    Which chats the visibility denominator counts: every
                    in-scope chat ('all') or only product-gallery ('shopping')
                    chats. Defaults to 'shopping'.
                  type: string
                  enum:
                    - all
                    - shopping
              required:
                - product_id
          application/x-www-form-urlencoded:
            schema:
              type: object
              properties:
                project_id:
                  description: Required if using a company api key
                  example: or_f45b94ba-5e35-4982-93ed-285e72ee14eb
                  type: string
                product_id:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                start_date:
                  default: '2026-01-01'
                  description: >-
                    full-date notation as defined by RFC 3339, section 5.6, for
                    example, 2017-07-21
                  example: '2025-09-22'
                  type: string
                  format: date
                  pattern: >-
                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                end_date:
                  default: '2026-01-01'
                  description: >-
                    full-date notation as defined by RFC 3339, section 5.6, for
                    example, 2017-07-21
                  example: '2025-09-22'
                  type: string
                  format: date
                  pattern: >-
                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                country_codes:
                  type: array
                  items:
                    type: string
                model_channel_ids:
                  type: array
                  items:
                    type: string
                merchant_ids:
                  description: >-
                    Scope the response to chats where this product is sold
                    through one of these merchants — the per-merchant view of
                    rating, price, and mentions. The QFO breakdowns scope
                    through those chats too; only the visibility denominator
                    stays merchant-free.
                  type: array
                  items:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                topic_ids:
                  type: array
                  items:
                    type: string
                tag_ids:
                  type: array
                  items:
                    type: string
                tag_operator:
                  type: string
                  enum:
                    - and
                    - or
                chat_scope:
                  description: >-
                    Which chats the visibility denominator counts: every
                    in-scope chat ('all') or only product-gallery ('shopping')
                    chats. Defaults to 'shopping'.
                  type: string
                  enum:
                    - all
                    - shopping
              required:
                - product_id
          multipart/form-data:
            schema:
              type: object
              properties:
                project_id:
                  description: Required if using a company api key
                  example: or_f45b94ba-5e35-4982-93ed-285e72ee14eb
                  type: string
                product_id:
                  type: string
                  format: uuid
                  pattern: >-
                    ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                start_date:
                  default: '2026-01-01'
                  description: >-
                    full-date notation as defined by RFC 3339, section 5.6, for
                    example, 2017-07-21
                  example: '2025-09-22'
                  type: string
                  format: date
                  pattern: >-
                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                end_date:
                  default: '2026-01-01'
                  description: >-
                    full-date notation as defined by RFC 3339, section 5.6, for
                    example, 2017-07-21
                  example: '2025-09-22'
                  type: string
                  format: date
                  pattern: >-
                    ^(?:(?:\d\d[2468][048]|\d\d[13579][26]|\d\d0[48]|[02468][048]00|[13579][26]00)-02-29|\d{4}-(?:(?:0[13578]|1[02])-(?:0[1-9]|[12]\d|3[01])|(?:0[469]|11)-(?:0[1-9]|[12]\d|30)|(?:02)-(?:0[1-9]|1\d|2[0-8])))$
                country_codes:
                  type: array
                  items:
                    type: string
                model_channel_ids:
                  type: array
                  items:
                    type: string
                merchant_ids:
                  description: >-
                    Scope the response to chats where this product is sold
                    through one of these merchants — the per-merchant view of
                    rating, price, and mentions. The QFO breakdowns scope
                    through those chats too; only the visibility denominator
                    stays merchant-free.
                  type: array
                  items:
                    type: string
                    format: uuid
                    pattern: >-
                      ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                topic_ids:
                  type: array
                  items:
                    type: string
                tag_ids:
                  type: array
                  items:
                    type: string
                tag_operator:
                  type: string
                  enum:
                    - and
                    - or
                chat_scope:
                  description: >-
                    Which chats the visibility denominator counts: every
                    in-scope chat ('all') or only product-gallery ('shopping')
                    chats. Defaults to 'shopping'.
                  type: string
                  enum:
                    - all
                    - shopping
              required:
                - product_id
      responses:
        '200':
          description: >-
            A single product's detail metrics over the date range, with deltas
            against the immediately preceding period. `data` is null when the
            product does not exist in the project. Beyond the always-present
            identity and headline metrics, `data` carries optional extras —
            description, image, price/currency maps, the QFO breakdowns
            (fanout_queries, shopping_queries, and their *_terms n-gram
            variants, each capped at 25 entries) that surface the top queries
            and terms that mentioned this product, and `variants` (the product's
            live catalog variants — id, name, and a per-currency priceMap —
            capped at 50 with no pagination).
          content:
            application/json:
              schema:
                type: object
                properties:
                  data:
                    nullable: true
                    type: object
                    properties:
                      id:
                        type: string
                      name:
                        type: string
                      brand:
                        type: string
                      source:
                        type: string
                        enum:
                          - CATALOG
                          - LLM
                      first_seen_at:
                        type: string
                      visibility:
                        type: number
                      visibility_delta:
                        nullable: true
                        type: number
                      win_rate:
                        type: number
                      win_rate_delta:
                        nullable: true
                        type: number
                      avg_position:
                        nullable: true
                        type: number
                      avg_position_delta:
                        nullable: true
                        type: number
                      avg_rating:
                        nullable: true
                        type: number
                      avg_rating_delta:
                        nullable: true
                        type: number
                      mention_count:
                        type: number
                      mention_count_delta:
                        type: number
                      description:
                        nullable: true
                        type: string
                      image_url:
                        nullable: true
                        type: string
                      price_range:
                        type: object
                        additionalProperties:
                          type: object
                          properties:
                            min:
                              type: number
                            max:
                              type: number
                          required:
                            - min
                            - max
                      price_override:
                        type: object
                        additionalProperties:
                          type: object
                          properties:
                            min:
                              nullable: true
                              type: number
                            max:
                              nullable: true
                              type: number
                          required:
                            - min
                            - max
                      ai_price_map:
                        type: object
                        additionalProperties:
                          type: number
                      ai_price_delta_map:
                        type: object
                        additionalProperties:
                          type: number
                      fanout_queries:
                        type: array
                        items:
                          type: object
                          properties:
                            query_text:
                              type: string
                            distinct_chat_count:
                              type: number
                            distinct_chat_count_previous:
                              type: number
                            delta:
                              nullable: true
                              type: number
                          required:
                            - query_text
                            - distinct_chat_count
                            - distinct_chat_count_previous
                            - delta
                      shopping_queries:
                        type: array
                        items:
                          type: object
                          properties:
                            query_text:
                              type: string
                            distinct_chat_count:
                              type: number
                            distinct_chat_count_previous:
                              type: number
                            delta:
                              nullable: true
                              type: number
                          required:
                            - query_text
                            - distinct_chat_count
                            - distinct_chat_count_previous
                            - delta
                      fanout_query_terms:
                        type: array
                        items:
                          type: object
                          properties:
                            term:
                              type: string
                            distinct_chat_count:
                              type: number
                            distinct_chat_count_previous:
                              type: number
                            delta:
                              nullable: true
                              type: number
                          required:
                            - term
                            - distinct_chat_count
                            - distinct_chat_count_previous
                            - delta
                      shopping_query_terms:
                        type: array
                        items:
                          type: object
                          properties:
                            term:
                              type: string
                            distinct_chat_count:
                              type: number
                            distinct_chat_count_previous:
                              type: number
                            delta:
                              nullable: true
                              type: number
                          required:
                            - term
                            - distinct_chat_count
                            - distinct_chat_count_previous
                            - delta
                      variants:
                        type: array
                        items:
                          type: object
                          properties:
                            id:
                              type: string
                              format: uuid
                              pattern: >-
                                ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$
                            name:
                              type: string
                            priceMap:
                              type: object
                              additionalProperties:
                                type: number
                          required:
                            - id
                            - name
                            - priceMap
                    required:
                      - id
                      - name
                      - brand
                      - first_seen_at
                      - visibility
                      - visibility_delta
                      - win_rate
                      - win_rate_delta
                      - avg_position
                      - avg_position_delta
                      - avg_rating
                      - avg_rating_delta
                      - mention_count
                      - mention_count_delta
                  primary_currency:
                    type: string
                    pattern: ^[A-Z]{3}$
                required:
                  - data
                description: >-
                  A single product's detail metrics over the date range, with
                  deltas against the immediately preceding period. `data` is
                  null when the product does not exist in the project. Beyond
                  the always-present identity and headline metrics, `data`
                  carries optional extras — description, image, price/currency
                  maps, the QFO breakdowns (fanout_queries, shopping_queries,
                  and their *_terms n-gram variants, each capped at 25 entries)
                  that surface the top queries and terms that mentioned this
                  product, and `variants` (the product's live catalog variants —
                  id, name, and a per-currency priceMap — capped at 50 with no
                  pagination).
      security:
        - APIKeyHeader: []
        - APIKeyQuery: []
        - BearerAuth: []
components:
  securitySchemes:
    APIKeyHeader:
      type: apiKey
      in: header
      name: X-API-Key
    APIKeyQuery:
      type: apiKey
      in: query
      name: api_key
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT

````