cloro WebsiteAPI Get an API key
API Reference › AI Mode › Citation pills

Citation pills

A flattened, one-row-per-source view of the inline attribution chips Google AI Mode places beside its generated answer.

Overview

Alongside its answer text, Google AI Mode shows small inline chips (for example [Reddit +3]) that link each statement back to the pages it drew from. cloro surfaces those chips through the citationPills array inside the AI Mode extract response, so there is no additional request to make — the pills travel with the same payload as the answer.

Each element of the array represents a single (chip, source) pairing rather than a whole chip. A chip that references four pages therefore expands into four entries, all sharing one citationPillId but each carrying its own url, domain, and label. To rebuild the visible chip grouping, collect the entries that share a citationPillId. When the answer contains no attribution chips, citationPills is left out of result entirely, so treat it as optional when parsing.

Fields

FieldTypeDescription
labelstringThe cited page's own title as shown in the sources rail (for example "Best laptops for programmers in 2026"). Always included, but can be an empty string when no title is available — fall back to domain or url to identify the source in that case.
citationPillIdintegerA 1-based ordinal, assigned in document order, that is shared by every entry belonging to the same on-screen chip. Group on this value to reassemble a chip.
urlstringThe full link to the cited page.
domainstringThe host name parsed from url, convenient for display and de-duplication.
descriptionstringA short snippet Google attaches to the source in the rail. Present only when one is available.
positionintegerThe 1-based index of this source within the companion result.sources array, letting you cross-reference the two lists.

Response example

{
  "success": true,
  "result": {
    "text": "Here are several laptops worth considering for programming...",
    "sources": [
      {
        "position": 1,
        "url": "https://example.com/best-laptops-2026",
        "label": "Best laptops for programmers in 2026",
        "description": "A roundup of the strongest machines for software work this year."
      },
      {
        "position": 2,
        "url": "https://example.com/dev-laptops-review",
        "label": "Developer laptop reviews",
        "description": "Hands-on reviews of laptops built for developers."
      },
      {
        "position": 3,
        "url": "https://example.com/macbook-pro-review",
        "label": "MacBook Pro for developers",
        "description": "Why so many engineers reach for the MacBook Pro."
      }
    ],
    "citationPills": [
      {
        "label": "Best laptops for programmers in 2026",
        "citationPillId": 1,
        "url": "https://example.com/best-laptops-2026",
        "domain": "example.com",
        "description": "A roundup of the strongest machines for software work this year.",
        "position": 1
      },
      {
        "label": "MacBook Pro for developers",
        "citationPillId": 1,
        "url": "https://example.com/macbook-pro-review",
        "domain": "example.com",
        "description": "Why so many engineers reach for the MacBook Pro.",
        "position": 3
      }
    ]
  }
}

Notes

Because a single chip can span several rows, never assume the array length equals the number of visible chips — count distinct citationPillId values instead. If your integration also reads result.sources, use each entry's position to link a pill back to its full source record. Questions about the payload can go to [email protected].