Create a topic summary
Summarize a set of your articles. You choose the articles with fq, and you
say what to write with instructions.
Despite the name, this endpoint can generate many kinds of content: a newsletter, a search-results summary, a topic roundup, key takeaways for one article, or structured JSON for your own front end.
You must supply at least one of instructions, template or task_id.
Miso reads the articles from your own catalog — you do not send article text.
If nothing matches your fq, the call returns 404 and creates nothing.
End-to-end
1. Submit.
curl -X POST "https://api.askmiso.com/v1/ask/summary" \
-H "X-Api-Key: $KEY" -H "Content-Type: application/json" \
-d '{ "instructions": "Summarize this week in 3 bullets.",
"fq": "published_at:[NOW-7DAYS TO NOW]",
"max_articles": 10 }'
2. You get an id to poll.
{
"message": "success",
"data": {
"question_id": "57aeb083-b943-43b1-86ab-b6108788dd50",
"pipeline_version": "v2"
}
}
3. Poll GET /v1/ask/summaries/{question_id}/summary until finished is
true. Wait 2-4 seconds before the first poll, or it returns 404.
{
"message": "success",
"data": {
"finished": true,
"answer": "- Rates are expected to fall twice this…",
"sources": [
{ "product_id": "art-20260612-rates",
"title": "Central bank signals 2026 cuts" }
]
}
}
Get it in one call
Add ?wait_for_answer=true and the finished summary comes back inline. Use it
only for short summaries: the connection can time out after about 60 seconds,
and a summary with rules often takes longer. For production, poll.
Selecting the articles
fq is a filter query over your catalog:
published_at:[NOW-7DAYS TO NOW] the last 7 days
section:"markets" one section
product_id:("id-1" OR "id-2") specific articles
brand:"Example" AND type:"news" combined
max_articles controls how many are retrieved, not how many are
summarized — the model sees the first 25. A larger value widens the pool for
relevance_instruction to filter.
Use virtual_articles for text that is not in your catalog.
See the examples on this page for rules, JSON output, other languages and tracked links.
- Type: booleanwait
_for _answer If true, block until the summary is ready and return it inline instead of a poll id.
Summarize a set of articles. Provide either a template or custom instructions.
- Type: stringanonymous
_id The anonymous visitor.
- Type: array string[]fl
Fields to return for each source article.
- Type: booleanforce
_refresh Regenerate and overwrite the cached summary instead of returning a cached result.
- Type: string enumformat
Output format of the generated summary.
values- markdown
- html
- json
- Type: stringfq
Selects the articles to summarize (Elasticsearch query-string syntax (Lucene)). Every matching catalog article — up to
max_articles— is included in one summary.Examples:
"section:\"markets\""— the markets section"tags:\"interest rates\""— a topic"section:\"markets\" AND published_at:[NOW-7DAYS TO NOW]"— this week's articles (newsletter)"rating:[4 TO *]"— numeric range
- Type: stringinstructions
Custom instructions for the summary (tone, length, structure…). Provide this or
template. - Type: integermax
_articles min:1max:200Maximum number of matching articles to include in the summary.
- Type: string | nullrelevance
_instruction Per-article relevance filter: each candidate is kept only if it satisfies this (strict LLM check). e.g. "Keep only if interest-rate policy is a primary subject, not a passing mention."
- Type: array string[]rules
Rules the summary must satisfy; it is regenerated up to 3× to meet them. e.g.
["Must be under 200 words", "Each article must be cited"]. - Type: string | null enumtemplate
A built-in summary template. Provide this or
instructions.values- newsletter
_v1 - newsvault
- Type: stringurl
_template Template applied to every link in the summary — use it to add click-tracking params, e.g.
https://example.com{url}?utm_source=newsletter. - Type: stringuser
_hash Hash of
user_id/anonymous_idwith your Secret API Key — send when calling from the browser with a Publishable key.
- application/json
curl 'https://api.askmiso.com/v1/ask/summary?api_key=YOUR_SECRET_TOKEN' \
--request POST \
--header 'Content-Type: application/json' \
--data '{
"fq": "section:\"markets\" AND published_at:[NOW-7DAYS TO NOW]",
"max_articles": 15,
"instructions": "Write a concise newsletter intro summarizing the week'\''s top market stories.",
"format": "html",
"url_template": "https://example.com{url}?utm_source=newsletter"
}'
{
"data": {
"question_id": "57aeb083-b943-43b1-86ab-b6108788dd50",
"pipeline_version": "v2"
}
}