Summary APIs
The Summary API generates an AI topic summary over a set of your articles — not a single document. You choose which articles to summarize with a filter (fq) and/or by passing virtual_articles, and Miso writes one cohesive summary that cites them.
Possible use cases: newsletters, a TL;DR above a search-results page, folder / topic digests, and recurring briefs.
Like the Ask API, summarization is a two-step flow:
POST /v1/ask/summary— returns aquestion_id.GET /v1/ask/questions/{question_id}/answer— poll untilfinishedistrue(useanswer_stage/finishedto track progress).
Pass ?wait_for_answer=true on step 1 to skip polling and get the finished summary inline.
Example 1 — Summarize a topic (simplest)
Summarize everything tagged interest rates:
POST /v1/ask/summary
{
"fq": "tags:\"interest rates\"",
"instructions": "Summarize the current state of intere…"
}
The API responds with a question id:
{
"message": "success",
"data": {
"question_id": "57aeb083-b943-43b1-86ab-b6108788dd50"
}
}
Then GET /v1/ask/questions/57aeb083-.../answer. While it is still working:
{
"message": "success",
"data": {
"question_id": "57aeb083-b943-43b1-86ab-b6108788dd50",
"answer_stage": "Selecting articles",
"finished": false,
"answer": "Selecting articles ...",
"sources": []
}
}
When finished:
{
"message": "success",
"data": {
"question_id": "57aeb083-b943-43b1-86ab-b6108788dd50",
"answer_stage": "Generating summary",
"finished": true,
"answer": "## Interest-rate policy in 2026\n\nThe c…",
"sources": [
{
"product_id": "art-20260612-rates",
"title": "Central bank signals 2026 cuts",
"url": "https://example.com/markets/rates"
}
]
}
}
Example 2 — Weekly newsletter (HTML + tracked links)
Summarize the markets section from the last 7 days, render HTML, and rewrite every link for click tracking with url_template:
POST /v1/ask/summary
{
"fq": "section:\"markets\" AND published_at:[NOW-7DAY…",
"max_articles": 15,
"instructions": "Write a concise newsletter intro sum…",
"format": "html",
"url_template": "https://example.com{url}?utm_source=n…"
}
Poll the answer endpoint exactly as in Example 1. The answer field comes back as HTML.
Example 3 — Enforce length & citations with rules
rules are checked after generation; the summary is automatically regenerated up to 3× until they all pass:
POST /v1/ask/summary
{
"fq": "tags:\"interest rates\"",
"instructions": "Summarize the current rate outlook.",
"rules": ["Must be under 200 words", "Every claim must cite a source"]
}
Example 4 — Tighten relevance with relevance_instruction
When a broad fq pulls in loosely-related articles, add a strict per-article check. Miso keeps a candidate only if it passes. While you tune it, pass force_refresh so you do not get a cached result:
POST /v1/ask/summary
{
"fq": "tags:\"banking\"",
"instructions": "Summarize recent developments at the…",
"relevance_instruction": "Keep only if a major US ban…",
"force_refresh": true
}
Example 5 — Include content not in your catalog (virtual_articles)
Summarize a mix of catalog articles and ad-hoc content (for example, a breaking press release). Virtual articles are prepended and cited identically:
POST /v1/ask/summary
{
"fq": "section:\"markets\"",
"virtual_articles": [
{
"product_id": "pr-2026-0624",
"title": "Bank issues surprise statement",
"content": "Full text ...",
"url": "https://example.com/pr/0624"
}
],
"instructions": "Summarize today's market-moving news,…"
}
Tip: add
?wait_for_answer=trueto the POST to get the finished summary in the response and skip polling — handy for server-side rendering of a newsletter or digest page.
