---
title: "Mark a recommendation as implemented"
method: POST
path: "/v1/recommendations/{id}/implemented"
tags: ["Recommendations"]
---

# Mark a recommendation as implemented

`POST /v1/recommendations/{id}/implemented`

## Request

- Base URL: `https://api.nops.io`
- URL: `https://api.nops.io/v1/recommendations/{id}/implemented`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/nops/apis/nops-public-api/docs/v1/recommendations/:id/implemented/post.ts> (a function with typed inputs; its response is checked against the schema)

Records that the change was made, who made it and when, and checks billing straight away. It counts no savings by itself: see `savingsConfirmedBy` in the response. Returns 409 when nOps already tracks a change for the recommendation, or cannot confirm it from billing.

## Path parameters

- `id` string, required: Recommendation ID (`recommendation_id` from the recommendations list)

## Headers

- `Idempotency-Key` string, required: Unique key for safe retries on write requests (required, max 64 characters).

## Request body

- object
  - `implementedAt` string, nullable: When the change was made (ISO 8601). Defaults to now; at most 90 days ago. A time later than now but on the same UTC day or within the next 14 hours is recorded as now; a later one is rejected.
  - `note` string, nullable: Shown in the recommendation history.

## Response `200`

Mark a recommendation as implemented

- object
  - `data` object, required: JSON object

## Other responses

- `401`: Unauthorized — invalid or missing API key
- `403`: Forbidden — insufficient permissions or entitlement

---

[API](https://skmtc.dev/nops/apis/nops-public-api.md) - [All operations](https://skmtc.dev/nops/apis/nops-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/nops/apis/nops-public-api/revisions/ac549fa495dd?raw)
