---
title: "SummarizeArticle"
method: POST
path: "/api/news/v1/summarize-article"
tags: ["NewsService"]
---

# SummarizeArticle

`POST /api/news/v1/summarize-article`

## Request

- Base URL: `https://api.worldmonitor.app`
- URL: `https://api.worldmonitor.app/api/news/v1/summarize-article`
- Auth: one of:
  - API key in header `X-WorldMonitor-Key`
  - API key in header `X-Api-Key`

Generate an article summary with language-model provider selection and fallback support, returning the chosen provider, model and reported processing errors.

## Headers

- `Idempotency-Key` string

## Request body

- WorldmonitorNewsV1SummarizeArticleRequest: SummarizeArticleRequest specifies parameters for LLM article summarization.
  - `provider` string, required: LLM provider: "ollama", "openrouter"
  - `headlines` string[]
  - `mode` string: Summarization mode: "brief", "analysis", "translate", "" (default).
  - `geoContext` string: Geographic signal context to include in the prompt.
  - `variant` string: Variant: "full", "tech", or target language for translate mode.
  - `lang` string: Output language code, default "en".
  - `systemAppend` string: Optional system prompt append for analytical framework instructions.
  - `bodies` string[]

## Response `200`

OK

- WorldmonitorNewsV1SummarizeArticleResponse: SummarizeArticleResponse contains the LLM summarization result.
  - `summary` string: The generated summary text.
  - `model` string: Model identifier used for generation.
  - `provider` string: Provider that produced the result (or "cache").
  - `tokens` integer: Token count from the LLM response.
  - `fallback` boolean: Whether the client should try the next provider in the fallback chain.
  - `error` string: Error message if the request failed.
  - `errorType` string: Error type/name (e.g. "TypeError").
  - `status` 'SUMMARIZE_STATUS_UNSPECIFIED' | 'SUMMARIZE_STATUS_SUCCESS' | 'SUMMARIZE_STATUS_CACHED' | 'SUMMARIZE_STATUS_SKIPPED' | 'SUMMARIZE_STATUS_ERROR': SummarizeStatus indicates the outcome of a summarization request.
  - `statusDetail` string: Human-readable detail for non-success statuses (skip reason, etc.).

## Other responses

- `400`: Validation error, invalid Idempotency-Key header, or malformed JSON request body
- `401`: Missing or invalid API key.
- `403`: API access requires an active subscription (the API key's subscription is inactive or expired).
- `409`: A request with this Idempotency-Key is still being processed
- `422`: The Idempotency-Key was already used with a different request body
- `429`: Rate limit exceeded.
- `503`: Service unavailable. Billing-verification responses include code and X-Billing-Verification; other gateway infrastructure failures use the generic GatewayError shape.
- `default`: Gateway or handler error response.

---

[API](https://skmtc.dev/worldmonitor/apis/worldmonitor-api.md) · [All operations](https://skmtc.dev/worldmonitor/apis/worldmonitor-api/llms.txt) · [OpenAPI document](https://skmtc.dev/worldmonitor/apis/worldmonitor-api/revisions/e3dc8463a5c9?raw)
