cloro WebsiteAPI Get an API key
API Reference › AI Mode › Changelog

Changelog

A running record of what shipped across the cloro API — new response fields, endpoint behavior, delivery features, and fixes — most recent first.

Overview

Entries below describe additive and non-breaking changes unless a release is explicitly flagged as breaking. Every dated item names the affected endpoints and the exact field or header involved, so you can pin your integration to a known contract. Want these updates pushed to you? Subscribe to the changelog RSS feed and route it into Slack. Questions about a specific release can go to [email protected].

1 June 2026 — Signed webhook deliveries

You can now turn on webhook signing per organization from the dashboard. Once enabled, every asynchronous task delivery includes an X-Cloro-Signature header — an HMAC-SHA256 digest computed over <timestamp>.<raw_body> — together with X-Cloro-Timestamp and X-Cloro-Webhook-Id. Recompute the digest on your side to confirm the payload really came from cloro and was not altered in transit, and reject any delivery whose timestamp is more than a few minutes old to shut down replay attempts.

HeaderTypeDescription
X-Cloro-SignaturestringHMAC-SHA256 of the signed payload, hex-encoded.
X-Cloro-TimestampstringUnix time the delivery was signed; use it for freshness checks.
X-Cloro-Webhook-IdstringStable identifier for the configured webhook endpoint.

25 May 2026 — Copilot exposes its search queries

POST https://api.cloro.cloud/v1/monitor/copilot

Copilot answers now report the web searches the model fanned out while composing its response, under result.searchQueries. The field is always present, needs no opt-in flag, and carries no extra charge.

Response example

{
  "result": {
    "searchQueries": [
      "best laptops for programming 2026",
      "developer laptop reviews"
    ]
  }
}

22 May 2026 — citationPills reach Perplexity, Copilot, and Gemini

The structured citationPills array now ships on all three of these endpoints alongside the answer text and sources. With the 21 May rollout to Google AI Overview and AI Mode, the same iteration shape is available across six surfaces: ChatGPT, Google AI Overview, AI Mode, Perplexity, Copilot, and Gemini. Every element is a single (pill, source) pair, and entries sharing one citationPillId belong to the same chip.

FieldTypeDescription
labelstringThe cited source's own page title.
citationPillIdintegerGroups entries emitted from the same pill.
urlstringDestination link for this source.
domainstringHost portion of the source URL.
descriptionstring?Short blurb for the source, when available.
positionintegerRank of the source within the pill.

ChatGPT adds two fields the others do not emit — datePublished? and type — so cross-provider consumers should treat both as ChatGPT-only and rely on citationPillId for grouping. The array is dropped from result when an answer has no pills; existing consumers are unaffected.

Response example

{
  "citationPills": [
    {
      "label": "Best Programming Laptops 2026 — TechCrunch",
      "citationPillId": 1,
      "url": "https://techcrunch.com/laptops",
      "domain": "techcrunch.com",
      "description": "Latest laptop reviews and recommendations",
      "position": 1
    },
    {
      "label": "Wired Laptop Buyer's Guide",
      "citationPillId": 1,
      "url": "https://wired.com/programming-laptops",
      "domain": "wired.com",
      "description": "Programming laptop buyer's guide",
      "position": 3
    }
  ]
}

21 May 2026 — citationPills on Google AI Overview and AI Mode

Both Google AI surfaces began emitting the additive citationPills array next to the answer text and sources. When one pill references N sources, you get N entries that share a citationPillId but carry their own label, url, domain, and position; group by that id to rebuild the pill. Inline [anchor](url) markdown links stay the canonical in-text citation, while the array gives typed consumers per-source access without re-parsing prose.

19 May 2026 — Type discriminator on AI Overview ads

POST https://api.cloro.cloud/v1/monitor/google-search

Every element of aioverview.ads[] now carries an explicit type field, matching the convention already used on the top-level ads[] array. Each ad is exactly one sub-type, and the two sub-schemas are disjoint, so you can route to per-type rendering without guessing from the presence of price or store data.

FieldTypeDescription
typestring"TEXT" for text/lead-gen ads, "SHOPPING" for product ads.
domain, descriptionstringPresent on TEXT ads.
price, storestringPresent on SHOPPING ads; old_price is optional.
imagestring?Appears in either sub-type — a hero image on text ads, a product photo on shopping cards — so treat it as optional.

Notes

Field additions in this log are backward compatible: optional keys may be omitted when they do not apply, and new fields never displace existing ones. If a release changes an established contract, it will say so directly in its entry.