> ## Documentation Index
> Fetch the complete documentation index at: https://api-docs.hrizn.io/llms.txt
> Use this file to discover all available pages before exploring further.

# Apply compliance decisions

> Accept or ignore stored compliance findings by issue id

Acts on findings from the stored report for this content: **accepted** issue ids rewrite the stored body with the suggested replacement, **ignored** issue ids record a dismissal without touching the copy. Both are persisted atomically with the body write, and decisions are carried across re-checks — a fixed or dismissed finding does not come back as open.

**Scope required:** `compliance:write`

Also requires the dealership's **Compliance Checking** plan feature (Pro+ / add-on).

## Path parameters

<ParamField path="id" type="string" required>UUID of the content.</ParamField>

## Body

<ParamField body="issue_ids" type="string[]">Findings to fix. Each id comes from the stored report (`GET /content/{id}/compliance` → `report.issues[].id`); the suggested replacement is applied to the stored body.</ParamField>
<ParamField body="ignore_issue_ids" type="string[]">Findings to dismiss. Recorded with the reason; the copy is untouched.</ParamField>
<ParamField body="reason" type="string">Why the ignored findings are acceptable (stored with the dismissal).</ParamField>
<ParamField body="allow_published" type="boolean">Must be `true` to rewrite content that is already published.</ParamField>

At least one of `issue_ids` or `ignore_issue_ids` is required. Send an `Idempotency-Key` header to make retries safe.

## Response

<ResponseField name="body_updated" type="boolean">Whether any accepted fix changed the stored body.</ResponseField>
<ResponseField name="applied" type="object[]">Accepted findings that were rewritten, with the text replaced and how many occurrences changed.</ResponseField>
<ResponseField name="ignored" type="string[]">Issue ids recorded as dismissed.</ResponseField>
<ResponseField name="skipped" type="object[]">Requested findings that could not be applied, each with a `reason` (for example, the flagged wording is no longer present).</ResponseField>
<ResponseField name="content_changed_since_check" type="boolean">The body changed after the report was produced — re-run the check before trusting the remaining findings.</ResponseField>

<ResponseExample>
  ```json 200 theme={"theme":{"light":"github-light","dark":"github-dark"}}
  {
    "data": {
      "article_id": "d4e5f6a7-b8c9-0123-def0-456789abcdef",
      "body_format": "rich_text",
      "body_updated": true,
      "applied": [
        {
          "issue_id": "9f3d2a417c05b1e8",
          "problematic_text": "guaranteed lowest price",
          "suggested_replacement": "competitive pricing",
          "replacement_count": 1
        }
      ],
      "ignored": ["4b8e1f60aa3c92d7"],
      "skipped": [],
      "content_changed_since_check": false,
      "guidance": "Re-run trigger_content_compliance to confirm the new verdict. This is not legal advice."
    }
  }
  ```
</ResponseExample>

<Warning>
  A `409` with code `stale_content` means the article body changed between reading the report and applying it — nothing was written. Re-run the compliance check for a fresh report, then retry.
</Warning>

<Note>
  Published content is refused unless `allow_published: true` is passed — rewriting a live page is a deliberate choice.
</Note>
