---
title: "Approve Desk Learning"
method: POST
path: "/gtm-internal/agent-desk/learnings/{version_id}/approve"
tags: ["gtm-internal"]
---

# Approve Desk Learning

`POST /gtm-internal/agent-desk/learnings/{version_id}/approve`

## 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/agent-desk/learnings/{version_id}/approve`
- Auth: OAuth 2
  - Password
  - Token URL: `/auth/login`

Apply a HELD learning, staff-side — the owner's "Apply it", verbatim.

Held is the degraded outcome (classifier fallback, dial off, document
moved), not a lane: on staff-curated desks it is staff who clear
the residue, with the same tap the owner has.

## Path parameters

- `version_id` string, required

## Request body

- DeskLearningActionRequest: Approve/undo a learning from the staff side. ``statement_override`` and ``test_override`` mirror the owner endpoint's ``LearningApprove`` fields — including the statement guardrail (no product limit since 2026-10-14), HERE at request parsing, so an over-long override is the same 422 on both doors rather than an uncaught ValidationError (a 500) when the handler constructs ``LearningApprove``.
  - `domain_id` string, required
  - `statement_override` string, nullable
  - `test_override` object, nullable

## Response `200`

Successful Response

- LearningApproveOut
  - `activated_versions` object[], required
  - `test` object, nullable
  - `regenerate_offer` string, nullable
  - `baseline_run_enqueued` boolean
  - `skipped_versions` object[]
  - `redrafting` boolean
  - `correction` object, nullable
  - `detail` string, required

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