---
title: "Patch Account Status"
method: PATCH
path: "/gtm-internal/account-status/{account_id}"
tags: ["gtm-internal"]
---

# Patch Account Status

`PATCH /gtm-internal/account-status/{account_id}`

## Request

- Base URL: `https://api-v1.unusual.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api-v1.unusual.ai/gtm-internal/account-status/{account_id}`
- Auth: OAuth 2
  - Password
  - Token URL: `/auth/login`

Edit the editable board fields on one account row. Funnels through the
canonical spine writer (`upsert_account_sync` — the SAME underlayer as the
MCP `upsert_account`), so field allowlist/validation semantics are
identical across surfaces, and audit-logs the change with before/after
snapshots (the MCP convention). Returns the refreshed row so the FE swaps
it in place.

## Path parameters

- `account_id` string, required

## Request body

- AccountStatusPatchRequest: Board-row editor — the editable Notion columns ("everything but account and domain"). Only fields present in the body are applied; an explicit null CLEARS the value (the writer's present-``None`` semantics). ``status`` is a deliberate lifecycle transition and cannot be null. Everything else on the row is DERIVED (progress/milestones/counts/agency edge) or deliberately read-only here (account name, domain).
  - `status` string, nullable
  - `journey_phase` string, nullable
  - `account_type` string, nullable
  - `owner` string, nullable
  - `stage` string, nullable
  - `last_touch` string, date, nullable
  - `notes` string, nullable
  - `segment` string, nullable

## Response `200`

Successful Response

- AccountStatusRow
  - `account_id` string, required
  - `org_id` string, nullable
  - `domain_id` string, nullable
  - `status` string, required
  - `account` string, required
  - `domain_host` string, nullable
  - `domain_url` string, nullable
  - `owner` string, nullable
  - `jtbd` string, nullable
  - `jtbd_goal_id` string, nullable
  - `stage` string, nullable
  - `journey_phase` string, nullable
  - `account_type` string, nullable
  - `agency_mediated` boolean
  - `intro_source` string, nullable
  - `segment` string, nullable
  - `last_touch` string, nullable
  - `last_signal_at` string, nullable
  - `signal_count_30d` integer, nullable
  - `notes` string, nullable
  - `work_progress_pct` integer, nullable
  - `work_milestones` AccountStatusMilestone[]
    - `key` string, required
    - `label` string, required
    - `done` boolean, required
    - `at` string, nullable
  - `priority_count` integer
  - `open_task_count` integer

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/unusual/apis/dashboard-server.md) - [All operations](https://skmtc.dev/unusual/apis/dashboard-server/llms.txt) - [OpenAPI document](https://skmtc.dev/unusual/apis/dashboard-server/revisions/89f716930ead?raw)
