CLSTR API

CLSTR REST news API (base https://api.clstr.news/v1, Bearer key prefixed clstr_) as documented at clstr.news/developers: 4 operations (GET /situations, /situations/{id}, /clusters/{id}, /search). Contract generated from the documentation by API Evangelist (2026-11-04); not the provider's own document. The same four reads are exposed as tools by the remote MCP server at https://mcp.clstr.news/mcp.

GitHub OpenAPI

Operations 4

GET /v1/clusters/{clusteridorslug} GET /v1/clusters/{clusterIdOrSlug} #
GET /v1/situations GET /v1/situations #
GET /v1/situations/{situationidorslug} GET /v1/situations/{situationIdOrSlug} #

Work with this as data

Every API here is available over the APIs.io API and to AI agents over MCP.

MCP server

One button, every client — Claude, Cursor, VS Code and the rest.

https://apis.io/mcp

Tools for apis

7 MCP tools reach this
  • find_apisBrowse and filter every API in the catalog.
  • get_api_artifactsOne API's artifacts, grouped by type.
  • get_openapiThe primary OpenAPI for this API.
  • find_similar_apisAPIs that look like this one.
  • apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.
  • resolveTurn a domain, URL or GitHub org into the provider it belongs to.
  • find_cohortsEvery scored population of providers in the catalog.
All 92 tools →

Call it yourself

curl for this page
This API
curl "https://apis.io/api/v1/apis/clstr-news:clstr-news-api"
All apis
curl "https://apis.io/api/v1/apis?limit=25"

Calls without X-API-Key need no key. Calls with it need a paid plan — get a key.

Get an API key

Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.

A second provider on the same verified email joins the account you already have.

OpenAPI Specification

clstr-news-openapi-generated.yml Raw ↑
openapi: 3.1.0
info:
  title: CLSTR API
  version: '2026-11-04'
  description: 'GENERATED FROM DOCUMENTATION by API Evangelist on 2026-11-04: 5 operation(s)
    read from 11 public documentation page(s) (each operation names its page in x-source).
    This is not the provider''s published contract; CLSTR has published no machine-readable
    contract that the pipeline could find. Engine: anthropic.'
  x-evidence-tiers:
    code-example: 11
    documentation: -6
    pages-with-code: 11
    pages-read: 11
  x-generated-from: documentation
  x-provenance: generated
  x-authored-by: API Evangelist
  x-generated: '2026-11-04'
  x-generator: generate-contract-from-docs.py
  x-engine: anthropic
  x-sources:
  - https://clstr.news/developers
  - https://clstr.news/developers/recipes
  - https://clstr.news/developers.md
  - https://clstr.news/developers/recipes.md
  - https://clstr.news/mcp-server-for-news
  - https://clstr.news/news-clustering-api
  - https://clstr.news/news-timeline-api
  - https://clstr.news/news-api-by-country
  - https://clstr.news/geopolitical-news-api
  - https://clstr.news/multilingual-news-api
  - https://clstr.news/news-summarization-api
servers:
- url: https://api.clstr.news
paths:
  /v1/clusters/{clusteridorslug}:
    get:
      operationId: get_v1_clusters_clusteridorslug
      tags:
      - Clusters
      summary: GET /v1/clusters/{clusterIdOrSlug}
      x-source: https://clstr.news/developers
      parameters:
      - name: clusteridorslug
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1ClustersClusteridorslugResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s \"https://api.clstr.news/v1/clusters/CLUSTER_ID_OR_SLUG\"\
          \  -H \"Authorization: Bearer clstr_YOUR_KEY\" \n Example response \n {\n\
          \ \"data\": {\n \"id\": \"4f3c0a11-9d21-4b7e-8a55-2c9f1d6b0e34\",\n \"slug\"\
          : \"insurers-widen-red-sea-war-risk-zone\",\n \"title\": \"Insurers widen\
          \ the Red Sea war risk zone\",\n \"summary\": \"Marine underwriters extended\
          \ the listed war risk area to the southern Red Sea, raising premiums "
  /v1/search:
    get:
      operationId: get_v1_search
      tags:
      - Search
      summary: GET /v1/search
      x-source: https://clstr.news/developers
      parameters:
      - name: days
        in: query
        required: false
        schema:
          type: string
      - name: q
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1SearchResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s \"https://api.clstr.news/v1/search?q=red%20sea%20shipping%20insurance&days=7\"\
          \  -H \"Authorization: Bearer clstr_YOUR_KEY\" \n Example response \n {\n\
          \ \"data\": [\n {\n \"id\": \"4f3c0a11-9d21-4b7e-8a55-2c9f1d6b0e34\",\n\
          \ \"slug\": \"insurers-widen-red-sea-war-risk-zone\",\n \"title\": \"Insurers\
          \ widen the Red Sea war risk zone\",\n \"summary\": \"Marine underwriters\
          \ extended the listed war risk area to the southern Re"
  /v1/situations:
    get:
      operationId: get_v1_situations
      tags:
      - Situations
      summary: GET /v1/situations
      x-source: https://clstr.news/developers
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1SituationsResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s \"https://api.clstr.news/v1/situations?limit=3\"  -H \"\
          Authorization: Bearer clstr_YOUR_KEY\" \n 3. Or connect an agent instead.\
          \ The same data is served over MCP: see MCP server .\n Not sure what to\
          \ build first? Developer recipes has three to copy: a morning brief, a dashboard\
          \ poll and a topic monitor. \n Authentication \n Every request needs an\
          \ API key. Create a free one in Settings (sign in firs"
  /v1/situations/{situationidorslug}:
    get:
      operationId: get_v1_situations_situationidorslug
      tags:
      - Situations
      summary: GET /v1/situations/{situationIdOrSlug}
      x-source: https://clstr.news/developers
      parameters:
      - name: situationidorslug
        in: path
        required: true
        schema:
          type: string
      responses:
        '200':
          description: Success (shape read from the example response on the page)
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetV1SituationsSituationidorslugResponse'
      x-evidence:
        kind: code-example
        language: curl
        snippet: "curl -s \"https://api.clstr.news/v1/situations/SITUATION_ID_OR_SLUG\"\
          \  -H \"Authorization: Bearer clstr_YOUR_KEY\" \n Example response (truncated\
          \ timeline) \n {\n \"data\": {\n \"id\": \"8f2b1c6e-0a47-4d93-b8e1-77c5d9a2f410\"\
          ,\n \"slug\": \"red-sea-shipping-attacks\",\n \"title\": \"Red Sea shipping\
          \ attacks\",\n \"summary\": \"Attacks on merchant shipping in the southern\
          \ Red Sea have pushed most container lines onto the Cape"
components:
  schemas:
    PostMcpRequest:
      type: object
      properties:
        jsonrpc:
          type: string
        id:
          type: integer
        method:
          type: string
        params:
          type: object
          properties:
            name:
              type: string
            arguments:
              type: object
              properties:
                window:
                  type: string
                limit:
                  type: integer
    GetV1ClustersClusteridorslugResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            slug:
              type: string
            title:
              type: string
            summary:
              type: string
            summary_full:
              type: string
            keywords:
              type: array
              items:
                type: string
            category:
              type: string
            countries:
              type: array
              items:
                type: string
            significance_score:
              type: integer
            sources:
              type: integer
            published_at:
              type: string
              format: date-time
            updated_at:
              type: string
              format: date-time
            url:
              type: string
            articles:
              type: array
              items:
                type: object
                properties:
                  source_host:
                    type: string
                  url:
                    type: string
                  title:
                    type: string
                  published_at:
                    type: string
                    format: date-time
            articles_total:
              type: integer
            articles_truncated:
              type: boolean
            situation:
              type: object
              properties:
                id:
                  type: string
                title:
                  type: string
                slug:
                  type: string
                cluster_count:
                  type: integer
    GetV1SearchResponse:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              slug:
                type: string
              title:
                type: string
              summary:
                type: string
              category:
                type: string
              countries:
                type: array
                items:
                  type: string
              significance_score:
                type: integer
              sources:
                type: integer
              published_at:
                type: string
                format: date-time
              updated_at:
                type: string
                format: date-time
              url:
                type: string
        query:
          type: object
          properties:
            q:
              type: string
            days:
              type: integer
        next_cursor:
          type: string
    GetV1SituationsResponse:
      type: object
      properties:
        data:
          type: array
          items:
            type: object
            properties:
              id:
                type: string
              slug:
                type: string
              title:
                type: string
              summary_preview:
                type: string
              cluster_count:
                type: integer
              source_count:
                type: integer
              first_seen:
                type: string
                format: date-time
              last_updated:
                type: string
                format: date-time
              status:
                type: string
              category:
                type: string
              categories:
                type: array
                items:
                  type: string
              countries:
                type: array
                items:
                  type: string
              significance_score:
                type: integer
              latest_cluster_title:
                type: string
              url:
                type: string
        next_cursor:
          type: string
    GetV1SituationsSituationidorslugResponse:
      type: object
      properties:
        data:
          type: object
          properties:
            id:
              type: string
            slug:
              type: string
            title:
              type: string
            summary:
              type: string
            summary_preview:
              type: string
            cluster_count:
              type: integer
            source_count:
              type: integer
            first_seen:
              type: string
              format: date-time
            last_updated:
              type: string
              format: date-time
            status:
              type: string
            category:
              type: string
            categories:
              type: array
              items:
                type: string
            latest_cluster_title:
              type: string
            significance_score:
              type: integer
            url:
              type: string
            is_timeline_page:
              type: boolean
            timeline:
              type: array
              items:
                type: object
                properties:
                  id:
                    type: string
                  slug:
                    type: string
                  title:
                    type: string
                  summary:
                    type: string
                  category:
                    type: string
                  countries:
                    type: array
                    items:
                      type: string
                  significance_score:
                    type: integer
                  sources:
                    type: integer
                  published_at:
                    type: string
                    format: date-time
                  updated_at:
                    type: string
                    format: date-time
                  url:
                    type: string
            timeline_cursor:
              type: object
              properties:
                has_more:
                  type: boolean
                next_before:
                  type: string
                remaining_count:
                  type: integer
                total_count:
                  type: integer
            day_span:
              type: integer
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
security:
- bearer: []
tags:
- name: Clusters
- name: Mcp
- name: Search
- name: Situations