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

# ChatGPT product details schema

> Rationale and reviews that ChatGPT shows in a product's sheet, attached to each shopping-card product, inline product and entity listing.

When you click a product in ChatGPT, a sheet opens with a **What to know** summary and a **What people are saying** list of reviews. Set `include.productDetails: true` together with `include.shopping: true` to get this content as `productDetails` on each product in [shopping cards](https://cloro.dev/docs/api-reference/endpoint/chatgpt/shopping-cards.md), [inline products](https://cloro.dev/docs/api-reference/endpoint/chatgpt/inline-products.md) and [entity listings](https://cloro.dev/docs/api-reference/endpoint/chatgpt/entities.md) (`entities[n].product`).

```json theme={null}
{
  "prompt": "best running shoes under $150",
  "model": "CHATGPT",
  "country": "US",
  "include": {
    "shopping": true,
    "productDetails": true
  }
}
```

> [!NOTE]
>
> **Credit cost**
>
> `include.productDetails` adds +2 credits to the request, in addition to the +2 credits for `include.shopping`. The cost is the same however many products the answer has. `include.productDetails` has no effect and costs nothing without `include.shopping`.

## Availability

* `rationale` is present for almost every product.
* `reviews` is not always present. Many products have a rationale and no reviews.
* A product without `productDetails` is a product for which ChatGPT returned nothing.
* A product with no `id` and no `offers` (a product that the answer shows without a full listing) has no `productDetails`.

## Product details structure

| Field | Type | Description |
| - | - | - |
| `rationale` | object | The "What to know" summary (see below). May be absent. |
| `reviews` | object | The "What people are saying" section (see below). May be absent. |

### Rationale

| Field | Type | Description |
| - | - | - |
| `rationale` | string | Why ChatGPT recommends the product |
| `citations` | array | Sources for the rationale, as [citations](#citation). May be empty. |

### Reviews

| Field | Type | Description |
| - | - | - |
| `summary` | string | Summary of what reviewers say |
| `reviews` | array | One entry per review source (see below) |

### Review

| Field | Type | Description |
| - | - | - |
| `source` | string | Review source (e.g., "RunRepeat", "Reddit") |
| `theme` | string | Aspect the review is about (e.g., "Stability") |
| `summary` | string | What the source says about that aspect |
| `sentiment` | string | `positive`, `neutral` or `negative`. Not always present. |
| `citation` | object | The reviewed page, as a [citation](#citation). Not always present. |
| `rating` | number | Rating at the source. Not returned at the moment (see below). |
| `numReviews` | integer | Number of reviews at the source. Not returned at the moment (see below). |
| `citeUrl` | string | URL of the source. Not returned at the moment (see below). |

> [!NOTE]
>
> ChatGPT sends `rating`, `numReviews` and `citeUrl` as empty values at the moment, so they are not in the response. They are part of the schema so that they come through with no change on your side if ChatGPT starts to fill them.

### Citation

| Field | Type | Description |
| - | - | - |
| `title` | string | Page title |
| `url` | string | Page URL |
| `snippet` | string | Short extract of the page. Not always present. |
| `pubDate` | string | Publication date of the page. Not always present. |

## Response example

```json theme={null}
{
  "title": "adidas Adizero EVO SL",
  "position": 3,
  "price": "$150.00",
  "productDetails": {
    "rationale": {
      "rationale": "The adidas Adizero EVO SL is well suited to runners who want a lightweight, versatile road shoe that can handle everything from easy miles to faster sessions.",
      "citations": [
        {
          "title": "Cut in half: adidas Adizero EVO SL Review",
          "url": "https://runrepeat.com/adidas-adizero-evo-sl",
          "snippet": "Nov 26, 2024 — we found it lightweight, well-cushioned, sleek-looking and excellent for a wide range of paces and distances."
        }
      ]
    },
    "reviews": {
      "summary": "Reviewers praise its lively, versatile ride and value. The main criticism is that it can feel less stable than some alternatives.",
      "reviews": [
        {
          "source": "RunRepeat",
          "theme": "Lightweight Versatility",
          "summary": "Lightweight, well cushioned and capable across a wide range of paces and distances.",
          "sentiment": "positive",
          "citation": {
            "title": "Cut in half: adidas Adizero EVO SL Review",
            "url": "https://runrepeat.com/adidas-adizero-evo-sl",
            "snippet": "Nov 26, 2024 — we found it lightweight, well-cushioned, sleek-looking and excellent for a wide range of paces and distances."
          }
        },
        {
          "source": "Reddit",
          "theme": "Stability",
          "summary": "One experienced runner found the shoe a bit unstable at faster paces.",
          "sentiment": "negative"
        }
      ]
    }
  }
}
```


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