---
title: "Get Goal"
method: GET
path: "/projects/{project_id}/goal"
---

# Get Goal

`GET /projects/{project_id}/goal`

## 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`
- Auth: none declared

Read the latest goal state plus ambient task context.

The response payload (v0.4.2+) includes ``ambient_tasks`` — the
five most recent task rows, newest first, as ``{status, description,
created_at}`` dicts. Cold sessions can render the directive *and*
last activity from a single MCP call.

G8.34/G9 — Returns 200 with an empty stub when the project exists
but no goal has been set yet (previously 404). The 404-as-empty
semantics produced a console error on the dashboard's initial
render for every fresh project, which made the panel-render
Playwright test flake by environment. Browsers can't tell the
difference between "field is empty" and "fetch threw 4xx", so
the only honest answer is 200 with empty fields. Returns 404 still
when the project itself does not exist.

## Path parameters

- `project_id` string, required

## 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)
