ConversionAI
Decide which module to render in each slot on a page, so the placement earns the most engagement.
You describe the slots on the page. Miso returns what to put in each one, already filled with content, and learns from the impressions and clicks you report back.
How it works
Miso runs a bandit over the module families available for a slot. Each family has UI styles (a carousel, a thumbnail list). Miso samples the combination likely to earn the most value, hydrates it with real content, and returns it.
The payload inside each slot is the same shape the matching API already returns, so your existing renderers work unchanged. Only the outer wrapper is new.
Reporting back
Echo miso_id, slot_id, type and variant on your impression and click
events. That is what attributes the outcome to the right choice and lets the
model improve.
Availability. ConversionAI is enabled per app. Contact your Miso representative.
Examples
Example 1 — Two slots on an article page
POST /v1/ask/conversion
{
"anonymous_id": "visitor-8f3a1c",
"product_id": "art-20260612-rates",
"slots": [
{ "slot_id": "slot_top" },
{ "slot_id": "slot_inline" }
]
}
{
"message": "success",
"data": {
"miso_id": "550e8400-e29b-41d4-a716-446655440000",
"slots": [
{
"slot_id": "slot_top",
"type": "recirculation",
"variant": "carousel",
"data": { "recommendations": [] }
},
{
"slot_id": "slot_inline",
"type": "related_questions",
"variant": "default",
"data": { "related_questions": ["…", "…"] }
}
]
}
}
Render each slot by its type. Keep miso_id, slot_id, type and variant
so you can attach them to the events you send back.
Example 2 — Scope what can be recommended
fq restricts the eligible articles and fl shapes the fields returned:
POST /v1/ask/conversion
{
"anonymous_id": "visitor-8f3a1c",
"product_id": "art-20260612-rates",
"slots": [{ "slot_id": "slot_top" }],
"fq": "section:\"markets\"",
"fl": ["title", "url", "cover_image"]
}
Example 3 — Multi-brand pages
Pass the brand so the model learns per site:
POST /v1/ask/conversion
{
"anonymous_id": "visitor-8f3a1c",
"product_id": "art-20260612-rates",
"slots": [{ "slot_id": "slot_top" }],
"metadata": { "site": "markets" }
}
Example 4 — Force a module while designing
Set both type and variant on a slot and Miso serves exactly that, skipping
the decision. Use it to preview a layout — not in production, because a forced
slot teaches the model nothing:
POST /v1/ask/conversion
{
"product_id": "art-20260612-rates",
"slots": [
{
"slot_id": "slot_top",
"type": "recirculation",
"variant": "thumbnail_list"
}
]
}
