> ## 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.

# projects

> Create, list, inspect, and update client projects.

A project belongs to a client, holds the tasks people log time against, and carries the
billing method used when the work is invoiced. For fields and response details, see the
[API reference](/api-reference/projects/get).

<Note>
  A project is addressed by its `identifier`, the short hex string returned by
  `projects list`. `--client-id` is different: it takes the client's record `id`, a UUID. See
  [Getting the project ID](/getting-started/getting-project-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>

## projects list

Find a project's identifier, or list the projects a user is on.

```bash theme={"system"}
neetoinvoice projects list --client-id 7c1f5e2a9b --status active
```

| Flag           | Type     | Required | Default | Description                             |
| -------------- | -------- | -------- | ------- | --------------------------------------- |
| `--client-id`  | `string` | No       |         | Filter to one client (identifier or ID) |
| `--status`     | `string` | No       |         | Filter by status: active or archived    |
| `--user-email` | `string` | No       |         | Filter to a user's projects             |

```json theme={"system"}
{
  "data": {
    "projects": [
      {
        "id": "f627c399-379d-4d07-a6f6-90b7c9470ac0",
        "identifier": "89d1b47d9f36af3c9ecf",
        "name": "Website Redesign",
        "client_id": "3f0c0f87-ddc7-45f4-ad7a-c3690fa04963",
        "status": "active",
        "requires_daily_entry": false
      }
    ]
  },
  "breadcrumbs": [
    { "label": "Show", "command": "neetoinvoice projects show <project-id>" }
  ]
}
```

`--client-id` accepts either the client's `identifier` or its record `id`.

## projects show

Show a project with its client, tasks, checklists, and recurring invoice settings. Use it to
find the `task_id` that `time-entries create` needs.

```bash theme={"system"}
neetoinvoice projects show 89d1b47d9f36af3c9ecf
```

### Required arguments

* `<project-id>` - the project's `identifier`.

```json theme={"system"}
{
  "data": {
    "project": {
      "id": "f627c399-379d-4d07-a6f6-90b7c9470ac0",
      "identifier": "89d1b47d9f36af3c9ecf",
      "client_id": "3f0c0f87-ddc7-45f4-ad7a-c3690fa04963",
      "name": "Website Redesign",
      "status": "active",
      "hourly_rate": 120.0,
      "hourly_rate_with_currency": "$120.00",
      "flat_amount": null,
      "currency": "USD",
      "currency_symbol": "$",
      "creator_name": "Oliver Smith",
      "internal_notes": null,
      "billing_method": "Hourly Project Rate",
      "fixed_price_project": false,
      "hourly_person_rate": false,
      "hourly_task_rate": false,
      "hourly_project_rate": true,
      "client": {
        "id": "3f0c0f87-ddc7-45f4-ad7a-c3690fa04963",
        "identifier": "7c1f5e2a9b",
        "name": "Acme Corp",
        "currency": "USD",
        "status": "active",
        "internal_notes": null
      },
      "recurring_invoice": {
        "id": "6be815a8-9a10-455c-95d9-b0b548664420",
        "enabled": false,
        "first_issue_date": null,
        "frequency": null,
        "frequency_type": null,
        "time_to_send": null,
        "timezone": null,
        "interval": null
      },
      "invoice_count": 3
    },
    "tasks": [
      {
        "id": "24e6a2fe-31bb-686c-541a-9f36af3c9ecf",
        "name": "Design",
        "hourly_rate": null,
        "hourly_rate_with_currency": null,
        "deleted": false,
        "is_billable": true
      }
    ],
    "checklists": []
  },
  "breadcrumbs": [
    {
      "label": "Project users",
      "command": "neetoinvoice project-users list --project <project-id>"
    },
    {
      "label": "Update",
      "command": "neetoinvoice projects update <project-id> --user-email <email>"
    }
  ]
}
```

## projects create

Create a project under a client. At least one `--task` is required, because a project must
always have a task to log time against.

```bash theme={"system"}
neetoinvoice projects create \
  --name "Website Redesign" \
  --client-id 3f0c0f87-ddc7-45f4-ad7a-c3690fa04963 \
  --task Design \
  --task Development \
  --billing-method hourly_project_rate \
  --hourly-rate 120 \
  --currency USD \
  --user-email oliver@example.com
```

| Flag               | Type          | Required | Default | Description                                                                                             |
| ------------------ | ------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------- |
| `--billing-method` | `string`      | No       |         | Billing method (hourly\_project\_rate, hourly\_person\_rate, hourly\_task\_rate, fixed\_price\_project) |
| `--client-id`      | `string`      | Yes      |         | Client record ID (UUID) the project belongs to                                                          |
| `--currency`       | `string`      | No       |         | Currency code (e.g. USD)                                                                                |
| `--flat-amount`    | `float64`     | No       | `0`     | Flat amount (for fixed price projects)                                                                  |
| `--hourly-rate`    | `float64`     | No       | `0`     | Hourly rate                                                                                             |
| `--internal-notes` | `string`      | No       |         | Internal notes                                                                                          |
| `--name`           | `string`      | Yes      |         | Project name                                                                                            |
| `--task`           | `stringSlice` | Yes      | `[]`    | Task name to add to the project (repeatable; at least one task is required on create)                   |
| `--user-email`     | `string`      | Yes      |         | Email of the acting organization user                                                                   |

Billing methods are `hourly_project_rate`, `hourly_person_rate`, `hourly_task_rate`, and
`fixed_price_project`. Use `--flat-amount` instead of `--hourly-rate` for a fixed price
project.

```json theme={"system"}
{
  "data": {
    "notice_code": "thumbs_up",
    "project": {
      "id": "f627c399-379d-4d07-a6f6-90b7c9470ac0",
      "identifier": "89d1b47d9f36af3c9ecf",
      "name": "Website Redesign",
      "client_id": "3f0c0f87-ddc7-45f4-ad7a-c3690fa04963",
      "status": "active"
    }
  },
  "breadcrumbs": [
    { "label": "Show", "command": "neetoinvoice projects show <project-id>" },
    {
      "label": "Add user",
      "command": "neetoinvoice project-users create --project <project-id> --user-id <user-id>"
    }
  ]
}
```

## projects update

Update a project. Only the flags you pass are changed. `--user-email` identifies the acting
organization user and is always required.

```bash theme={"system"}
neetoinvoice projects update 89d1b47d9f36af3c9ecf \
  --hourly-rate 140 \
  --user-email oliver@example.com
```

### Required arguments

* `<project-id>` - the project's `identifier`.

| Flag               | Type          | Required | Default | Description                                                                                             |
| ------------------ | ------------- | -------- | ------- | ------------------------------------------------------------------------------------------------------- |
| `--billing-method` | `string`      | No       |         | Billing method (hourly\_project\_rate, hourly\_person\_rate, hourly\_task\_rate, fixed\_price\_project) |
| `--client-id`      | `string`      | No       |         | Client record ID (UUID) the project belongs to                                                          |
| `--currency`       | `string`      | No       |         | Currency code (e.g. USD)                                                                                |
| `--flat-amount`    | `float64`     | No       | `0`     | Flat amount (for fixed price projects)                                                                  |
| `--hourly-rate`    | `float64`     | No       | `0`     | Hourly rate                                                                                             |
| `--internal-notes` | `string`      | No       |         | Internal notes                                                                                          |
| `--name`           | `string`      | No       |         | Project name                                                                                            |
| `--task`           | `stringSlice` | No       | `[]`    | Task name to add to the project (repeatable; at least one task is required on create)                   |
| `--user-email`     | `string`      | Yes      |         | Email of the acting organization user                                                                   |
