Example request
citationPills array documented below.
Overview
ChatGPT cites sources inline as it answers; theresult.citationPills array exposes those citations denormalized: each entry is one (pill, source) pair carrying a per-source label (the source’s own page title from the citation event), a citationPillId that groups entries from the same chip, and the per-source url/domain/description/position, plus the ChatGPT-only type and datePublished fields.
When a chip cites N sources, the array contains N entries sharing the same citationPillId but carrying different per-source label, url, and domain. Group by citationPillId to recover the pill-level structure.
The markdown field contains these citations as inline [label](url) links; the text field contains plain text without the links. The citationPills array provides structured metadata about all inline citations.
The field is omitted from result when the answer has no pills.
Citation pill structure
Each citation pill contains:| Field | Type | Description |
|---|---|---|
label | string | Per-source title of the citation. Always present; may be an empty string when the citation event ships no title — read domain / url for source identity in that case. |
citationPillId | integer | 0-based identifier shared by all entries from the same chip. Note: unlike the other providers (Google AIO, AI Mode, Copilot, Perplexity, Gemini) which use 1-based citationPillId, ChatGPT’s IDs start at 0 for historical reasons. |
url | string | The URL of the citation source |
domain | string | Domain of the citation source (e.g., "example.com") |
description | string, optional | Description of the citation content. The key is omitted when ChatGPT provides no snippet — see type. |
position | integer | 1-based position of this source in the sibling result.sources array. |
type | string | ChatGPT-only. Discriminator: "searchResult" or "groupedWebpage". See below for what this signals about description. |
datePublished | string, optional | ChatGPT-only. ISO 8601 date string of when the source was published. Omitted when the citation event ships no publish date — never emitted as null. |
type values
type reflects the structure of the underlying citation event in ChatGPT’s response:
"searchResult"— a regular web search hit. ChatGPT provides a snippet, sodescriptionis populated."groupedWebpage"— a citation rendered in the ChatGPT UI as a multi-source card (commonly used for community references like Reddit, Wikipedia, and ArXiv). ChatGPT does not provide a per-source snippet for these, so thedescriptionkey is omitted entirely from the pill object.