---
title: "List News"
method: GET
path: "/v1/teams/{team_id}/news"
tags: ["team news"]
---

# List News

`GET /v1/teams/{team_id}/news`

## Request

- Base URL: `https://api.stormy.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.stormy.ai/v1/teams/{team_id}/news`
- Auth: none declared

## Path parameters

- `team_id` string, uuid, required

## Headers

- `authorization` string, nullable
- `x-darwin-token` string, nullable

## Response `200`

Successful Response

- NewsList
  - `team_id` string, required
  - `news` NewsItem[], required
    - `id` string, required: The announcement id; the seen key is this plus the workspace.
    - `title` string, required
    - `body` string, required
    - `url` string: A same-origin path into the app, or a full link off it.
    - `at` string, date-time, required
    - `look` NewsLook: How a note is drawn. Every field is optional; an empty look is the house's default.
      - `mark` string: 'stormy', an app's slug ('slack') or an image URL; empty = read from the note's link.
      - `media` NewsMedia: A picture or a video above the title.
        - `src` string, required: A /path on stormy.ai or a full https URL.
        - `kind` 'image' | 'video'
        - `poster` string: A video's still before it plays.
      - `actions` NewsAction[]: Empty = the house's presses: Add <app> / Take a look / Got it, and Close.
        - `label` string, required
        - `href` string: A /app path (this workspace's copy) or a full https link.
        - `connect` string: An app's slug: opens its connect door.
        - `ask` string: Words handed to Stormy in the chat, as the owner's own.
        - `primary` boolean: The one black press; the LAST action when none says so (the right-hand pill).
      - `face` string: A `function Screen()` of JSX, mounted inside the house's frame with the renderer every page uses. In scope: note (title, body, url, look); the presses as verbs act(action), open(href), connect(app), ask(words), close(); and the house's parts <Mark/>, <Media/>, <Presses/>, <Default/>. The frame is narrow (a 420px window, a phone sheet): the house reflows grid-cols-N to fewer columns there unless the grid carries data-hold-columns. One that does not compile or throws falls back to the house's sheet.

## Other responses

- `422`: Validation Error

## Changes

> 68 revisions in range; 1 not diffed.

- **2026-10-05** `64dcb155acd1`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/stormy/apis/stormy-control-plane/changes/v1/teams/:team_id/news/get.md)

---

[API](https://skmtc.dev/stormy/apis/stormy-control-plane.md) · [All operations](https://skmtc.dev/stormy/apis/stormy-control-plane/llms.txt) · [OpenAPI document](https://skmtc.dev/stormy/apis/stormy-control-plane/revisions/a40e83844eaa?raw)
