Output formats
Every cloro response can be consumed in several shapes at once — raw HTML for auditing, and plain text or markdown for downstream LLM pipelines. This guide explains when to reach for each and how to deal with the structured objects that sit inside the text fields.
Overview
A single monitoring result carries the answer in multiple representations so you don't have to re-fetch or re-parse to fit a different use case. The HTML view preserves exactly what the AI provider rendered, which makes it useful as an audit trail. The text and markdown views are stripped down for machine reading, and a set of typed fields expose the rich objects (products, places, ads, and so on) in a clean, queryable form.
HTML as a rendered snapshot
Ask for HTML by setting include.html: true on any request. The response then carries a link to the complete captured page hosted on the cloro CDN. That link is short-lived and stops resolving roughly a day after the capture, so download and archive the file yourself if you need it beyond that window. Including HTML does not consume extra credits.
Because the snapshot is a faithful copy of what the model actually showed, it doubles as evidence you can hand to a client or reviewer. Keep in mind that it also carries the surrounding page furniture — navigation bars, footers, consent prompts, and inline scripts — so you will usually want to clean it before displaying it in your own interface. Run it through any reputable HTML sanitizer to drop scripts and chrome, then mount the result in whatever framework you use.
| Field | Type | Description |
|---|---|---|
| html_url | string | Temporary CDN link to the full captured page; expires about 24 hours after capture. |
| text | string | Flattened plain-text version of the answer, suitable as raw LLM input. |
| markdown | string | Markdown rendering of the answer; returned when include.markdown is true. |
| shopping_cards | array | Structured product cards with prices, ratings, and links. |
| places | array | Structured location listings surfaced by the provider. |
| ads | array | Sponsored placements extracted from the response. |
| inline_products | array | Inline product mentions parsed into discrete records. |
| entities | array | Named entities the provider highlighted in the answer. |
| map_entries | array | Map pins and their associated metadata. |
Text and markdown for analysis
For text mining or LLM workflows, read text or markdown straight from the response. There is one subtlety worth planning for: when the provider renders rich widgets — shopping cards, places, ads, inline products, entities, or map pins — the contents of those widgets are flattened into the same text stream. Citation sources and page footers, by contrast, are omitted from these two fields.
The typed fields (shopping_cards, places, ads, inline_products, entities, map_entries) hold the identical content in a structured form. A reliable pipeline uses text or markdown as the base input, then uses the typed fields both to strip the embedded widget text out of that base and to pull object-level values such as price or rating when you need them.
Response example
{
"id": "res_8f21ab",
"provider": "chatgpt",
"html_url": "https://cdn.cloro.cloud/captures/res_8f21ab.html",
"text": "The most recommended cordless drills this year are ...",
"markdown": "The most recommended **cordless drills** this year are ...",
"shopping_cards": [
{
"title": "VoltEdge 20V Cordless Drill",
"price": "$89.00",
"rating": 4.6,
"url": "https://example-retailer.com/voltedge-20v"
}
],
"places": [],
"ads": [],
"inline_products": [],
"entities": [
{ "name": "VoltEdge", "type": "brand" }
],
"map_entries": []
}
Notes
- The HTML link expires after about 24 hours; persist the file if you need long-term retention. Requesting HTML carries no additional credit cost.
- Feeding
textormarkdownto a model without first removing the embedded widget content can cause the model to mistake product cards, ads, or listings for the provider's own prose. - Questions about integration are welcome at [email protected].