# Accept a Product's Disclosure

> Coming soon, upon request — this feature is turned on for your tenant by the Aurea team. [Contact us](https://www.aureahub.com/contact)

Records that the user accepted the disclosure they were shown.

## Overview

- Send `version`, `language` and `sha256` exactly as [Disclosure](https://docs.aureahub.com/docs/earn-disclosure.md) answered them. Anything but the current text — an old version, another hash, a language that fell back to English — answers `409` `EARN_DISCLOSURE_VERSION_MISMATCH` (`This is not the product's current disclosure: read it again and accept that one.`), and nothing is recorded.
- `201` the first time; accepting the same version again answers `200` with the first `acceptedAt`.
- An acceptance belongs to the user and the version: a new version asks the user again.

## Endpoint

### `POST /v1/earn/products/{productId}/disclosure/acceptances`

Authentication: bearer token required.

Records the user's acceptance of the product's current disclosure.

**Path parameters**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `productId` | string | yes | The product's identifier |

**Request body**

| Name | Type | Required | Description |
| --- | --- | --- | --- |
| `version` | integer | yes | The version the user read |
| `language` | string | yes | Two-letter language code of the text the user read |
| `sha256` | string | yes | The `sha256` of the text the user read, as the disclosure route answered it |

**Responses**

`201` Accepted

```json
{
  "productId": "lumen",
  "version": 1,
  "language": "en",
  "acceptedAt": "2026-10-05T10:02:11.000Z"
}
```

`409` Not the Current Text

```json
{
  "statusCode": 409,
  "error": "ConflictError",
  "message": "This is not the product's current disclosure: read it again and accept that one.",
  "details": { "code": "EARN_DISCLOSURE_VERSION_MISMATCH", "productId": "lumen" }
}
```

---

Web version: https://docs.aureahub.com/#earn-disclosure-accept
