---
title: "Create Station"
method: POST
path: "/v1/teams/{team_id}/stations"
tags: ["stations"]
---

# Create Station

`POST /v1/teams/{team_id}/stations`

Make a desk — which is to say, make a folder and commit its `_meta.md`.

THE WRITE IS THE SAME WRITE THE FILES VIEW DOES. `_write_and_commit` writes
into the checkout and commits that one path, so a desk arrives in the
tree's history with an author and a message like everything else the shop
owns. Creating one through a second mechanism would be the first thing in
this product whose existence git could not explain.

IT IS A COMMIT, NOT A ROW, and that is why nothing downstream has to learn
about it: the rail is a read of the tree, so the folder that lands here is
on the owner's screen the next time `list_stations` runs, and the agent
finds it by listing directories the way it finds every other place.

## Path parameters

- `team_id` string, uuid, required

## Headers

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

## Request body

- StationCreate — A name, and the sentence the owner pressed. That is the whole design. NO TEMPLATE (owner, 2026-08-18: "just simply no templates just for a new channel"). A picker of desk TYPES would be us guessing the shape of a business we have never seen, and every guess we ship becomes a wall the day a shop needs the sixth kind we did not think of. A name is the one thing only the owner can supply; everything else about a place — what it holds, what it looks like, which screen it opens on — is the agent's to decorate once there is something to decorate. `note` IS NOT A TEMPLATE, AND THIS IS THE DISTINCTION THAT LETS IT IN. A template is US deciding what a kind of place contains. This is the sentence the AGENT offered and the OWNER pressed — "34 calls went to voicemail last month", the reason on the tile in the canvas — and it is the brief the build-out thread would otherwise have to re-derive from a slug. It is carried, never interpreted: no branch anywhere reads a word of it.
  - `title` string, required
  - `note` string
  - `screen` string
  - `said` string

## Response `201`

Successful Response

- StationCreated
  - `station` StationFace, required — What `_meta.md` declares about the folder itself. `fields` is the whole frontmatter, verbatim — which is what lets a SURFACE be declared rather than coded. A station that says `view_kind: call_transcript` is telling the shell to render the generic scrolling view over that kind, and the agent wrote that line into a file. Adding a new browsable surface is therefore a commit, not a release.
    - `name` string, required
    - `title` string, required
    - `hue` string
    - `needs` string
    - `face` string
    - `fields` object
    - `tab` string
    - `answer` object, nullable
    - `values` object
    - `waiting` integer
    - `unread` integer
    - `asks` string
    - `room` string
    - `last_at` string
    - `last_read_at` string
    - `created_at` string
    - `updated_at` string
    - `pins` StationPin[]
      - `ref` string, required
      - `path` string, required
      - `title` string, required
      - `needs` string, required
      - `who` string
      - `at` string
      - `rank` integer, nullable
      - `ask` string
      - `choices` string
      - `range` string
      - `unit` string
      - `at_point` string
      - `urgent` boolean
    - `urgent` integer
  - `commit` string
  - `existed` boolean

## Other responses

- `422` — Validation Error

## Changes

> 32 revisions in range; 1 not diffed.

- **2026-09-26** `faea4a09e09c` — 3 info
  - added the new optional request property `said`
  - added the optional property `station/pins/items/urgent` to the response with the `201` status
  - added the optional property `station/urgent` to the response with the `201` status
- **2026-09-16** `cdd163f61900` — 2 info
  - added the new optional request property `screen`
  - added the optional property `existed` to the response with the `201` status
- **2026-09-11** `79b0c0f35170` — 8 info
  - added the new optional request property `note`
  - added the optional property `station/last_read_at` to the response with the `201` status
  - added the optional property `station/pins/items/ask` to the response with the `201` status
  - added the optional property `station/pins/items/at_point` to the response with the `201` status
  - …4 more
- **2026-09-03** `c48c4f626ab0` — 1 info
  - added the optional property `station/unread` to the response with the `201` status

[Change history](https://skmtc.dev/stormy/apis/stormy-control-plane/changes/v1/teams/:team_id/stations/post.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/b09e3c4ee2af?raw)
