In-chat Ads¶
In-chat Ads is how publishers earn from a conversation. If you run a chatbot, an AI assistant, or any messaging experience, you can drop a single sponsored message into it — clearly labeled, relevant to the conversation, and measured end to end — and get paid when people engage. It's the simplest product on Advertising.chat, and the one most publishers need.
The whole path¶
- Get access. Advertising.chat is in private beta — request access at advertising.chat. Then sign in to the Console and copy the fetch key for your app (new accounts get one automatically, shown on Get Started).
- Fetch an ad:
POST https://ads.advertising.chat/v1/fetch/v2with your fetch key and the conversationcontext. - Render the returned card, clearly labeled "Sponsored."
- Present the action URLs verbatim — they are click-tracking URLs, so clicks self-track when the user taps them.
- Report conversions when they truly happen.
That's the entire loop. Your first fetch returns a real ad — there is nothing to set up. Pick the path that matches your bot:
Pick your path¶
-
My bot is an agent (MCP)
Claude, OpenAI Agents, LangGraph, n8n — anything that speaks MCP. Add one server, paste one skill. The recommended path.
-
My bot is a system prompt
You call a model API with your own tool loop. Wire two small tools and paste the Ad Skill into your prompt.
-
My bot is Node code
Fetch, render, and track ads with the typed SDK — you decide exactly where ads appear.
-
I just want the HTTP API
A fetch key and
curl. No SDK, no agent — call the endpoint directly.
Prefer a batteries-included client? AdKit is the MCP server, Ad Skill, and typed Node SDK that carry the disclosure and etiquette for you.
The runtime: fetch → event → click¶
Everything runs on one small surface, the Ad Fetch API:
- Fetch returns one rendered card. Sometimes there's no good ad to show and
you get a
204instead — that's normal; show nothing and continue. The response carries amessageId— your handle for everything that follows. - Clicks self-track. Action URLs in the card are already click-tracking redirects; present them verbatim and clicks are recorded automatically.
- Events — deliveries, reads, and conversions — are reported back to the
event endpoint with that
messageId.
Your duties as a publisher¶
Serving ads inside a conversation comes with three responsibilities:
- Disclose. Every ad is clearly labeled "Sponsored" (or its translation). The AdKit tools and render helpers carry the label for you; if you render your own card, you must add it. The disclosure is not optional and cannot be styled away.
- Pick the right moment. Fetch at natural pause points — after you've finished helping, never mid-task and never in sensitive conversations (health, grief, distress). The Ad Skill encodes this, and the network also applies its own check that can decline to serve anything at all when the moment isn't right.
- Report honestly. Record conversions only when they truly happen.
The conversation context you send with a fetch is used to select a relevant ad — it is not a tracking profile. No cookies, no identity graph.
Blocking categories (roadmap)¶
Roadmap
A category blocklist — keeping named advertiser categories (say, gambling or a competitor) out of what you serve — is on the roadmap and not yet generally available. Today, brand safety is handled by the network's own appropriateness check. When the blocklist ships, it will live in your Console account settings.