---
title: "Set North Star"
method: POST
path: "/projects/{project_id}/goal/north-star"
---

# Set North Star

`POST /projects/{project_id}/goal/north-star`

## Request

- Base URL: `https://usemeridian.us` (the document declares no server; this is the origin it was published from)
- URL: `https://usemeridian.us/projects/{project_id}/goal/north-star`
- Auth: none declared

v0.5.2 — update only the north star field.

Owner-only: requires ``human_id`` matching the project creator.
Returns the new goal version.

## Path parameters

- `project_id` string, required

## Request body

- SetNorthStarRequest: Body for POST /projects/{id}/goal/north-star (v0.5.2). Requires the project owner's human_id — non-owners receive 403.
  - `north_star` string, required
  - `human_id` string, required: Must match project owner.
  - `expected_updated_at` string, nullable: fc779141 — the north star's field_updated_at stamp the edit was based on. A stale stamp returns 409 with the current value and writes nothing; omit for last-write-wins.
  - `source` unknown

## Response `200`

Successful Response

- GoalState: A goal-state row. Content is decoded back to its original form (dict if it was stored as JSON, str otherwise). ``ambient_tasks`` (v0.4.2/3) carries the last few task descriptions so cold sessions read recent activity inline with the directive they get from a single ``get_goal`` call — no extra round trip. ``north_star`` and ``sprint`` (v0.5.2) are the structured goal hierarchy fields. Both are None when not yet set.
  - `id` string, required
  - `project_id` string, required
  - `content` union, required
    - object
    - string
  - `version` integer, required
  - `created_at` string, required
  - `updated_at` string, required
  - `ambient_tasks` object[], nullable
  - `north_star` string, nullable
  - `sprint` string, nullable
  - `north_star_inherited` boolean, nullable
  - `north_star_source_project_id` string, nullable
  - `xml` string, nullable
  - `cache_blocks` object[], nullable
  - `coherence_warning` object, nullable
  - `field_ages` object, nullable
  - `field_updated_at` object, nullable
  - `decisions` string, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/usemeridian/apis/meridian.md) · [All operations](https://skmtc.dev/usemeridian/apis/meridian/llms.txt) · [OpenAPI document](https://skmtc.dev/usemeridian/apis/meridian/revisions/f37a894bd374?raw)
