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

# Output formats

> Pretty tables, JSON, quiet, and TOON - and when to use each.

Every command can return one of four output formats. In an interactive terminal, pretty output is the default. Use the flags below for machine-readable output.

| Format | Flag                      | Best for                                                     |
| ------ | ------------------------- | ------------------------------------------------------------ |
| Pretty | *(default in a terminal)* | Reading a result yourself.                                   |
| JSON   | `--json`                  | Machine-readable payloads with pagination metadata.          |
| Quiet  | `--quiet`                 | Piping a value into another command or `jq`.                 |
| TOON   | `--toon`                  | Feeding list output back to an LLM (fewer tokens than JSON). |

If more than one is set, precedence is `--toon` > `--quiet` > `--json` > pretty.

## Pretty

The default in a terminal: tables for lists and key-value pairs for a single record. It is intended for people, not scripts.

```bash theme={"system"}
neetoauth users list
```

Column widths depend on your terminal, so the samples on the reference pages use `--json` instead.

## JSON

JSON wraps the resource body with breadcrumbs and, for list commands, pagination details:

```json theme={"system"}
{
  "data": [
    {
      "email": "oliver@example.com",
      "role": "owner",
      "first_name": "Oliver",
      "last_name": "Smith"
    }
  ],
  "breadcrumbs": [
    { "label": "Invite a new member", "command": "neetoauth users create --email <email> --role <role>" }
  ],
  "pagination": {
    "total_records": 1,
    "total_pages": 1,
    "current_page_number": 1,
    "page_size": 30
  }
}
```

For list commands, `data` is the array of records; the CLI removes the API response's resource key (`users`, `products`). For `create`, `data` holds the API response body.

`breadcrumbs` is omitted when empty, and `pagination` appears only on list commands. The CLI automatically uses JSON when output is piped (a non-TTY); use `--json` to force it.

## Quiet

`--quiet` returns only the `data` payload, with no envelope and no breadcrumbs. This is useful in scripts:

```bash theme={"system"}
neetoauth users list --quiet | jq -r '.[].email'
```

## TOON

`--toon` encodes the same data as TOON (Token-Optimized Output Notation). It keeps the JSON shape while compressing whitespace and keys, typically using 30-60% fewer tokens. Use it when giving list output to an AI assistant.

```bash theme={"system"}
neetoauth users list --toon
```

## Pagination

List commands return results in pages. The flags below control paging, and the JSON envelope's `pagination` block shows your position in the result set.

### Pagination parameters

<ParamField body="--page" type="integer">
  The page of results to retrieve, starting from 1.
</ParamField>

<ParamField body="--page-size" type="integer">
  The number of records to return per page (max 100).
</ParamField>

### Example usage

```bash theme={"system"}
neetoauth users list --page 2 --page-size 50
```

This returns the second page of members, with 50 records per page.

### Response structure

For list commands the JSON envelope carries a `pagination` block alongside the data:

```json theme={"system"}
{
  "pagination": {
    "total_records": 250,
    "total_pages": 5,
    "current_page_number": 2,
    "page_size": 50
  }
}
```

<ResponseField name="pagination.total_records" type="integer">
  The total number of records across all pages.
</ResponseField>

<ResponseField name="pagination.total_pages" type="integer">
  The total number of pages available.
</ResponseField>

<ResponseField name="pagination.current_page_number" type="integer">
  The page you are currently on.
</ResponseField>

<ResponseField name="pagination.page_size" type="integer">
  The number of records returned per page.
</ResponseField>

### Default behavior

If you omit both flags, the CLI lets the server use its defaults: page 1 with 30 records. Either flag overrides the defaults; `--page-size` accepts up to 100.

### Best practices

* To retrieve every page, increment `--page` until `current_page_number == total_pages`.
* Use `--json` or `--toon` in scripts when you need the `pagination` block. `--quiet` removes the envelope, so it does not include pagination metadata.
* Check `total_records` before you begin to estimate the work involved.
