Skip to main content
GET
/
v1
/
topics
/
breakout
List Breakout Topics
curl --request GET \
  --url https://api.upriver.ai/v1/topics/breakout \
  --header 'X-API-Key: <api-key>'
{
  "total_count": 123,
  "surface_mode": "topic",
  "topics": [
    {
      "topic_id": "<string>",
      "topic_name": "<string>",
      "canonical_name": "<string>",
      "vertical": "<string>",
      "status": "<string>",
      "peak_score": 123,
      "discovered_at": "2023-11-07T05:31:56Z",
      "updated_at": "2023-11-07T05:31:56Z",
      "category": "<string>",
      "relevance_score": 123,
      "engagement": {
        "percentile_score": 123
      },
      "confidence_score": 123,
      "last_signal_at": "2023-11-07T05:31:56Z",
      "source_summary": {},
      "citations": [
        {
          "source_category": "<string>",
          "source_url": "<string>",
          "title": "<string>",
          "snippet": "<string>",
          "source_authority": 123,
          "engagement_score": 123,
          "published_at": "2023-11-07T05:31:56Z"
        }
      ],
      "entities": [
        {
          "canonical_name": "<string>",
          "entity_type": "<string>",
          "confidence": 123,
          "entity_id": "<string>",
          "entity_subtype": "<string>"
        }
      ],
      "trend": {
        "momentum": 1,
        "direction": "up"
      },
      "citation_rate": [
        {
          "day": "<string>",
          "count": 123
        }
      ],
      "narrative": {
        "narrative_id": "<string>",
        "display_name": "<string>",
        "member_count": 123,
        "arc_summary": [
          "<string>"
        ]
      }
    }
  ],
  "stories": [
    {
      "requested_view": "cluster",
      "seed_topic": {
        "topic_id": "<string>",
        "topic_name": "<string>",
        "canonical_name": "<string>",
        "vertical": "<string>",
        "status": "<string>",
        "peak_score": 123,
        "discovered_at": "2023-11-07T05:31:56Z",
        "updated_at": "2023-11-07T05:31:56Z",
        "category": "<string>",
        "relevance_score": 123,
        "engagement": {
          "percentile_score": 123
        },
        "confidence_score": 123,
        "last_signal_at": "2023-11-07T05:31:56Z",
        "source_summary": {},
        "citations": [
          {
            "source_category": "<string>",
            "source_url": "<string>",
            "title": "<string>",
            "snippet": "<string>",
            "source_authority": 123,
            "engagement_score": 123,
            "published_at": "2023-11-07T05:31:56Z"
          }
        ],
        "entities": [
          {
            "canonical_name": "<string>",
            "entity_type": "<string>",
            "confidence": 123,
            "entity_id": "<string>",
            "entity_subtype": "<string>"
          }
        ],
        "trend": {
          "momentum": 1,
          "direction": "up"
        },
        "citation_rate": [
          {
            "day": "<string>",
            "count": 123
          }
        ],
        "narrative": {
          "narrative_id": "<string>",
          "display_name": "<string>",
          "member_count": 123,
          "arc_summary": [
            "<string>"
          ]
        }
      },
      "surface": {
        "story_id": "<string>",
        "surface_type": "topic",
        "member_topic_ids": [
          "<string>"
        ],
        "display_name": "<string>",
        "story_score": 123,
        "member_count": 123,
        "lead_topic_id": "<string>",
        "description": "<string>",
        "latest_signal_at": "2023-11-07T05:31:56Z",
        "coherence_score": 123,
        "projection_refreshed_at": "2023-11-07T05:31:56Z"
      },
      "member_topics": [
        {
          "topic_id": "<string>",
          "topic_name": "<string>",
          "canonical_name": "<string>",
          "vertical": "<string>",
          "status": "<string>",
          "peak_score": 123,
          "discovered_at": "2023-11-07T05:31:56Z",
          "updated_at": "2023-11-07T05:31:56Z",
          "category": "<string>",
          "relevance_score": 123,
          "engagement": {
            "percentile_score": 123
          },
          "confidence_score": 123,
          "last_signal_at": "2023-11-07T05:31:56Z",
          "source_summary": {},
          "citations": [
            {
              "source_category": "<string>",
              "source_url": "<string>",
              "title": "<string>",
              "snippet": "<string>",
              "source_authority": 123,
              "engagement_score": 123,
              "published_at": "2023-11-07T05:31:56Z"
            }
          ],
          "entities": [
            {
              "canonical_name": "<string>",
              "entity_type": "<string>",
              "confidence": 123,
              "entity_id": "<string>",
              "entity_subtype": "<string>"
            }
          ],
          "trend": {
            "momentum": 1,
            "direction": "up"
          },
          "citation_rate": [
            {
              "day": "<string>",
              "count": 123
            }
          ],
          "narrative": {
            "narrative_id": "<string>",
            "display_name": "<string>",
            "member_count": 123,
            "arc_summary": [
              "<string>"
            ]
          }
        }
      ],
      "search_match": {
        "matched_topic_count": 123,
        "matched_topic_ids": [
          "<string>"
        ],
        "match_sources": [
          "<string>"
        ]
      }
    }
  ],
  "story_source": "auto",
  "source_topic_count": 123,
  "returned_story_count": 123,
  "next_cursor": "<string>"
}

Authorizations

X-API-Key
string
header
required

Query Parameters

vertical
string | null

Filter by vertical: 'sports', 'tech', or 'politics'

category
string | null

Filter by category within the sports vertical (topic mode only), e.g. 'nba' or 'nfl'

status
string
default:active

Filter by topic status. Options: 'active', 'detected', 'emerging', 'trending', 'declining', 'all'.

min_importance
number | null
limit
integer
default:20

Maximum number of results. Requesting more than 20 results requires a credits-based plan.

Required range: 1 <= x <= 100
cursor
string | null
include
string[]

Optional expansions to include in the response. Allowed values: citations, entities. Example: include=citations&include=entities

sort_by
enum<string>
default:relevance

Sort order: 'relevance' (time-decayed dynamic score) or 'importance' (static base score)

Available options:
relevance,
importance
surface_mode
enum<string>
default:topic

List raw topics or deduped derived story surfaces

Available options:
topic,
story

Response

Successful Response

Response for listing breakout topics.

total_count
integer
required

Total matching rows for the current list mode. When surface_mode=story, this counts exact-deduped projected story surfaces before list-level overlap suppression and pagination.

surface_mode
enum<string>
default:topic

Whether the list contains raw topics or derived story surfaces

Available options:
topic,
story
topics
BreakoutTopicResponse · object[]

List of topics when surface_mode=topic

stories
TopicStoryViewResponse · object[]

Derived story surfaces when surface_mode=story

story_source
enum<string> | null

Actual story list source when surface_mode=story. 'projection' means cached group membership with live ranking, 'live' means request-time seed expansion.

Available options:
auto,
live,
projection
source_topic_count
integer | null

Raw source-topic seed count behind story mode before exact projection dedupe. This helps distinguish story-surface volume from the broader seed pool used to build them.

returned_story_count
integer | null

Number of returned story surfaces when surface_mode=story

next_cursor
string | null

Cursor for next page, if more results