> For the complete documentation index, see [llms.txt](https://api-docs.intratool.help/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://api-docs.intratool.help/api-reference/manual/manual-entry-read-users.md).

# ManualEntryReadUsers

## Introduction

`ManualEntryReadUsers` record explicit reading confirmations for a [ManualEntry](/api-reference/manual/manual-entries.md). Creating a read record also ensures that the same [User](/api-reference/users.md) has a corresponding [ManualEntrySeenUser](/api-reference/manual/manual-entry-seen-users.md).

## List by ManualEntry

List `ManualEntryReadUsers` visible for a `ManualEntry`.

**Definition**

<mark style="color:green;">`GET`</mark> `/api/manual/entries/{manualEntry}/read-users`

**Route Parameters**

| Parameter     | Type                  | Description                    |
| ------------- | --------------------- | ------------------------------ |
| `manualEntry` | `integer` \| `string` | ManualEntry ID, hash, or slug. |

**Behavior**

* The user must be able to show the parent entry.
* intratool accounts are excluded. Without the permission to see all entry read users, the result is limited to users in allowed departments.

**Example Request**

{% tabs %}
{% tab title="PHP" %}

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('GET', '/api/manual/entries/1/read-users', [
    'headers' => ['Authorization' => "Bearer {accessToken}"]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
[
  {
    "id": 1,
    "user_id": 3,
    "manual_entry_id": 1,
    "created_at": "2026-08-06 09:40:00"
  },
  {
    "id": 2,
    "user_id": 4,
    "manual_entry_id": 1,
    "created_at": "2026-08-06 09:45:00"
  }
]
```

## Mark as Read

Mark a `ManualEntry` as read by the current authenticated `User`.

**Definition**

<mark style="color:yellow;">`POST`</mark> `/api/manual/entries/{manualEntry}/read-users`

**Route Parameters**

| Parameter     | Type                  | Description                    |
| ------------- | --------------------- | ------------------------------ |
| `manualEntry` | `integer` \| `string` | ManualEntry ID, hash, or slug. |

**Behavior**

* `user_id` comes from authentication and `manual_entry_id` comes from the route; request-body values are ignored.
* Group accounts cannot create read records.
* The endpoint first creates the corresponding seen record when it does not exist. Repeated requests return the existing read record instead of creating duplicates.
* Creating the record marks notifications for the entry as read, which also marks those notifications as seen.

**Example Request**

{% tabs %}
{% tab title="PHP" %}

```php
$client = new GuzzleHttp\Client(['base_uri' => 'https://{tenant}.intratool.de']);
$response = $client->request('POST', '/api/manual/entries/1/read-users', [
    'headers' => ['Authorization' => "Bearer {accessToken}"]
]);
```

{% endtab %}
{% endtabs %}

**Example Response**

```json
{
  "status": "success",
  "data": {
    "id": 1,
    "user_id": 3,
    "manual_entry_id": 1,
    "created_at": "2026-08-06 09:40:00"
  }
}
```
