> ## Documentation Index
> Fetch the complete documentation index at: https://apidocs.neetoinvoice.com/llms.txt
> Use this file to discover all available pages before exploring further.

# time-entries

> Log, list, edit, and delete time entries on a project.

Time entries are hours logged by a user against a project's task. Unbilled entries are the raw
material for invoices. For fields and response details, see the
[API reference](/api-reference/time-entry/list).

<Note>
  `--task-id` is a task's record ID. Get it from
  [`projects show`](/cli-reference/projects#projects-show), or see
  [Getting the task ID](/getting-started/getting-task-id).
</Note>

<Note>
  Sample responses on this page show the JSON envelope (`--json`). Pretty output is the
  default on a terminal and its columns adapt to width. See
  [Output formats](/cli/output-formats).
</Note>

## time-entries list

List a project's unbilled time entries. This is the only paginated command in the CLI, so it
accepts `--page` and `--page-size`.

```bash theme={"system"}
neetoinvoice time-entries list \
  --client 7c1f5e2a9b \
  --project 89d1b47d9f36af3c9ecf \
  --start-date 2026-07-01 \
  --end-date 2026-07-31
```

| Flag           | Type     | Required | Default | Description                                                 |
| -------------- | -------- | -------- | ------- | ----------------------------------------------------------- |
| `--client`     | `string` | Yes      |         | Client identifier                                           |
| `--end-date`   | `string` | No       |         | Filter entries recorded on or before this date (YYYY-MM-DD) |
| `--page`       | `int`    | No       | `0`     | Page number                                                 |
| `--page-size`  | `int`    | No       | `0`     | Items per page (max 100)                                    |
| `--project`    | `string` | Yes      |         | Project identifier                                          |
| `--start-date` | `string` | No       |         | Filter entries recorded on or after this date (YYYY-MM-DD)  |
| `--user-email` | `string` | No       |         | Filter to a single user's entries by email                  |

```json theme={"system"}
{
  "data": {
    "time_entries": [
      {
        "id": "128c1dfc-b29f-4fda-9a05-8a90e197b81b",
        "user_id": "5a2de667-243b-4da3-b090-b698a03d98da",
        "task_id": "24e6a2fe-31bb-686c-541a-9f36af3c9ecf",
        "hours": 2.5,
        "recorded_on": "2026-07-14",
        "notes": "Reviewed the new dashboard layout",
        "status": "submitted",
        "created_at": "2026-07-14T09:12:04.000Z",
        "updated_at": "2026-07-14T09:12:04.000Z",
        "user_name": "Oliver Smith",
        "user_email": "oliver@example.com",
        "task_name": "Design",
        "project_id": "f627c399-379d-4d07-a6f6-90b7c9470ac0",
        "project_name": "Website Redesign",
        "client_id": "3f0c0f87-ddc7-45f4-ad7a-c3690fa04963",
        "client_name": "Acme Corp"
      }
    ],
    "total_count": 42,
    "page": 1,
    "page_size": 30,
    "total_pages": 2,
    "next_page": 2,
    "prev_page": null
  },
  "breadcrumbs": [
    {
      "label": "Log time",
      "command": "neetoinvoice time-entries create --client <client-id> --project <project-id> --task-id <task-id> --user-email <email> --recorded-on <date> --hours <hours>"
    }
  ]
}
```

## time-entries create

Log time against a task. `--user-email` is the organization user the hours belong to, which is
not necessarily the signed-in user.

```bash theme={"system"}
neetoinvoice time-entries create \
  --client 7c1f5e2a9b \
  --project 89d1b47d9f36af3c9ecf \
  --task-id 24e6a2fe-31bb-686c-541a-9f36af3c9ecf \
  --user-email oliver@example.com \
  --recorded-on 2026-07-14 \
  --hours 2.5 \
  --notes "Reviewed the new dashboard layout"
```

| Flag            | Type      | Required | Default | Description                                     |
| --------------- | --------- | -------- | ------- | ----------------------------------------------- |
| `--client`      | `string`  | Yes      |         | Client identifier                               |
| `--hours`       | `float64` | No       | `0`     | Hours spent (omit for no-hours projects)        |
| `--is-override` | `bool`    | No       | `false` | Override autolock for a locked date             |
| `--notes`       | `string`  | No       |         | Notes                                           |
| `--project`     | `string`  | Yes      |         | Project identifier                              |
| `--recorded-on` | `string`  | Yes      |         | Date the time was recorded (YYYY-MM-DD)         |
| `--task-id`     | `string`  | Yes      |         | Task ID                                         |
| `--user-email`  | `string`  | Yes      |         | Email of the organization user logging the time |

Pass `--is-override` to log against a date that autolock has already closed. Your role must
permit overriding autolock.

## time-entries update

Change an entry's hours, notes, or date. Only the flags you pass are changed.

```bash theme={"system"}
neetoinvoice time-entries update 128c1dfc-b29f-4fda-9a05-8a90e197b81b \
  --hours 3 \
  --user-email oliver@example.com
```

### Required arguments

* `<time-entry-id>` - the entry's record ID. See
  [Getting the time entry ID](/getting-started/getting-time-entry-id).

| Flag            | Type      | Required | Default | Description                         |
| --------------- | --------- | -------- | ------- | ----------------------------------- |
| `--hours`       | `float64` | No       | `0`     | New hours                           |
| `--is-override` | `bool`    | No       | `false` | Override autolock for a locked date |
| `--notes`       | `string`  | No       |         | New notes                           |
| `--recorded-on` | `string`  | No       |         | New date (YYYY-MM-DD)               |
| `--user-email`  | `string`  | No       |         | Acting user's email                 |

<Warning>
  An entry that has already been invoiced cannot be edited or deleted. Adjust the invoice
  instead.
</Warning>

## time-entries delete

Delete a time entry.

```bash theme={"system"}
neetoinvoice time-entries delete 128c1dfc-b29f-4fda-9a05-8a90e197b81b
```

### Required arguments

* `<time-entry-id>` - the entry's record ID.

```json theme={"system"}
{
  "data": { "message": "Time entry deleted." },
  "breadcrumbs": [
    {
      "label": "List",
      "command": "neetoinvoice time-entries list --client <client-id> --project <project-id>"
    }
  ]
}
```
