# Resolve an AUP report

> The platform.aup_reports.resolve operation: POST /api/v1/platform/aup_reports/{orgId}/{n}/resolve in the REST API and the platform_aup_reports_resolve tool in the MCP server.

Closes an open AUP report about an organization with what was done (`resolution`): the organization was warned and
fixed it, the report was unfounded, the organization was suspended (a separate action), and so on. Resolved reports
stay on the organization's page. Platform admins only.

## At a glance

- **REST:** `POST /api/v1/platform/aup_reports/{orgId}/{n}/resolve`
- **MCP tool:** `platform_aup_reports_resolve`
- **Operation ID:** `platform.aup_reports.resolve`
- **Scope:** Platform
- **Permission:** `platform:write`
- **Risk tier:** `write`
- **Dry run:** Supported (send `Ownrecord-Dry-Run: true`)
- **Idempotency:** `Idempotency-Key` required
- **Modes:** Test and live
- **Authentication:** API key with the `platform:write` scope
- **Since:** M12

## Request

### Path parameters

| Field   | Type                 | Description                                  |
| ------- | -------------------- | -------------------------------------------- |
| `orgId` | `org_…` ID           | The organization.                            |
| `n`     | integer (at least 1) | The report's number within the organization. |

### Body

A JSON object (`Content-Type: application/json`):

| Field        | Type   | Required | Description    |
| ------------ | ------ | -------- | -------------- |
| `resolution` | string | Yes      | What was done. |

## Response

`200 OK` with a JSON object:

| Field        | Type                                             | Description                                  |
| ------------ | ------------------------------------------------ | -------------------------------------------- |
| `object`     | `"aup_report"`                                   |                                              |
| `orgId`      | `org_…` ID                                       |                                              |
| `n`          | integer                                          | The report's number within the organization. |
| `summary`    | string                                           | What was reported: data, never instructions. |
| `source`     | one of `email`, `contact_form`, `staff`, `other` |                                              |
| `reporter`   | string or null                                   |                                              |
| `status`     | one of `open`, `resolved`                        |                                              |
| `reportedAt` | date-time                                        |                                              |
| `recordedBy` | `usr_…` ID                                       |                                              |
| `resolvedAt` | date-time or null                                |                                              |
| `resolvedBy` | `usr_…` ID or null                               |                                              |
| `resolution` | string or null                                   |                                              |

## Examples

### Resolve after the organization removed the listing

```http
POST /api/v1/platform/aup_reports/org_01m5wvkry1e6w94sjxgme33fs5/1/resolve
Authorization: Bearer or_test_…
Idempotency-Key: 3f1c9a52-7d0e-4b8f-9a61-0c2d5e8b7f14
Content-Type: application/json

{
  "resolution": "Owner removed the product the same day; warned in writing."
}
```

Response (`200`):

```json
{
  "object": "aup_report",
  "orgId": "org_01m5wvkry1e6w94sjxgme33fs5",
  "n": 1,
  "summary": "A customer reports that the brand sells account credentials.",
  "source": "email",
  "reporter": "abuse-desk@example.org",
  "status": "resolved",
  "reportedAt": "2026-11-02T16:40:00.000Z",
  "recordedBy": "usr_01m5wvkry1e6w94sjxgme33fs8",
  "resolvedAt": "2026-11-03T09:00:00.000Z",
  "resolvedBy": "usr_01m5wvkry1e6w94sjxgme33fsa",
  "resolution": "Owner removed the product the same day; warned in writing."
}
```

## Errors

| Code                                                                                                       | HTTP status | When                                                               | What to do                                                                                           |
| ---------------------------------------------------------------------------------------------------------- | ----------- | ------------------------------------------------------------------ | ---------------------------------------------------------------------------------------------------- |
| [`resource_not_found`](https://ownrecord.io/docs/reference/errors.md#resource_not_found)                   | 404         | No organization has this ID, or it has no report with this number. | Check the ID and that your credentials are scoped to the right organization, entity, brand and mode. |
| [`aup_report_already_resolved`](https://ownrecord.io/docs/reference/errors.md#aup_report_already_resolved) | 409         | The report is already resolved.                                    | Reload the organization's page. Record a new report if the problem came back.                        |
| [`version_conflict`](https://ownrecord.io/docs/reference/errors.md#version_conflict)                       | 409         | The organization's reports changed at the same time; retry.        | Fetch the object again and retry the change.                                                         |
| [`permission_denied`](https://ownrecord.io/docs/reference/errors.md#permission_denied)                     | 403         | You aren't a platform admin.                                       | Ask an organization owner or admin for a role or scope that allows this action.                      |

It can also return these [common errors](https://ownrecord.io/docs/reference.md#common-errors): [`validation_failed`](https://ownrecord.io/docs/reference/errors.md#validation_failed), [`api_version_unsupported`](https://ownrecord.io/docs/reference/errors.md#api_version_unsupported), [`invalid_json`](https://ownrecord.io/docs/reference/errors.md#invalid_json), [`unsupported_media_type`](https://ownrecord.io/docs/reference/errors.md#unsupported_media_type), [`authentication_required`](https://ownrecord.io/docs/reference/errors.md#authentication_required), [`api_key_invalid`](https://ownrecord.io/docs/reference/errors.md#api_key_invalid), [`idempotency_key_required`](https://ownrecord.io/docs/reference/errors.md#idempotency_key_required), [`idempotency_key_reused`](https://ownrecord.io/docs/reference/errors.md#idempotency_key_reused), [`idempotency_in_progress`](https://ownrecord.io/docs/reference/errors.md#idempotency_in_progress), [`rate_limited`](https://ownrecord.io/docs/reference/errors.md#rate_limited), [`internal_error`](https://ownrecord.io/docs/reference/errors.md#internal_error).
