# Brand campaigns on whiskeyriversaloon.sparkletree.io > Live, server-rendered brand campaign pages with schema.org JSON-LD, served > at the edge. Each page presents a brand's currently active campaign content > and stays up to date as the campaign changes. ## Discovery - [Brand home](https://whiskeyriversaloon.sparkletree.io/): the site root — a server-rendered brand home page listing the brand's live campaigns. - [Sitemap](https://whiskeyriversaloon.sparkletree.io/sitemap.xml): all public campaign pages. - Campaign page URLs follow the shape https://whiskeyriversaloon.sparkletree.io/c/{campaign-id}/{slug}. ## Machine-readable campaign data - Every campaign page and the brand home also serve text/markdown: request the same URL with "Accept: text/markdown" for a token-lean variant carrying the same facts (headline, brand, call to action) front-loaded. - GET https://whiskeyriversaloon.sparkletree.io/api/embed/v1/content?campaign={campaign-uuid} returns campaign content as JSON. On a brand domain the host identifies the organization; on shared hosts add organization={org-uuid}. ## Ask - POST https://whiskeyriversaloon.sparkletree.io/ask with JSON body {"question": "...", "campaign": "{campaign-uuid}"} returns JSON {"answer", "campaign": {"id","name","url"}, "links", "homeCampaignId", "session"} — grounded answers about a brand's active campaign. - The campaign UUID is the {campaign-id} segment of any campaign page URL (see the sitemap). On a brand domain "campaign" may be omitted — the host itself selects the brand and the most recently updated active campaign answers; the response's "campaign" object names which one. "organization": "{org-uuid}" is accepted but never required. - Multi-turn: echo the response's "session" (and, for a stable thread, its "homeCampaignId" as "campaign") in the next request body to continue the same conversation with history. - The answer may reference a recommended sibling campaign from the same brand; when it does, the response's "campaign" and "links" carry that recommended campaign's identity, page URL, and call to action, while "homeCampaignId" keeps naming the campaign the conversation is grounded in. ## Agent card - [Agent card](https://whiskeyriversaloon.sparkletree.io/.well-known/agent-card.json): machine-readable description of this site and its /ask skill for AI agents.