To list all zettel just send an HTTP GET request to the [[endpoint|00001012920000]] ''/z''[^If [[authentication is enabled|00001010040100]], you must include a valid [[access token|00001012050200]] in the ''Authorization'' header].
Always use the endpoint ''/z'' to work with a list of zettel.

Without further specifications, a plain text document is returned, with one line per zettel.
Each line contains in the first 14 characters the [[zettel identifier|00001006050000]].
Separated by a space character, the title of the zettel follows:

```sh
# curl http://127.0.0.1:23123/z
...
00001012051200 API: List all zettel
00001012050600 API: Provide an access token
00001012050400 API: Renew an access token
00001012050200 API: Authenticate a client
...
```

The list is **not** sorted, even in these examples where it appears to be sorted.
If you want to have it ordered, you must specify it with the help of a [[query expression|00001007700000]] / [[search term|00001007702000]].
See [[Query the list of all zettel|00001012051400]] how to do it.

=== Data output

Alternatively, you may retrieve the zettel list as a parseable object / a [[symbolic expression|00001012930500]] by providing the query parameter ''enc=data'':

```sh
# curl 'http://127.0.0.1:23123/z?enc=data'
(meta-list (query "") (human "") (zettel "00001012051200" (meta (back "00001007790000 00001012000000") (backward "00001007790000 00001012000000 00001012920000") (box-name "manual") (created "20210126175322") (folge "00001012051400") (forward "00001006050000 00001007700000 00001007702000 00001010040100 00001010070200 00001012050200 00001012051400 00001012920000 00001012921200 00001012930500") (modified "20260709192154") (published "20260709192154") (role "manual") (syntax "zmk") (tags "#api #manual #zettelstore") (title "API: List all zettel")) (rights create read update delete)) (zettel ...
```

Pretty-printed, this results in:
```
(meta-list
    (query "")
    (human "")
    (zettel "00001012051200"
        (meta
            (back "00001007790000 00001012000000")
            (backward "00001007790000 00001012000000 00001012920000")
            (box-name "manual")
            (created "20210126175322")
            (folge "00001012051400")
            (forward "00001006050000 00001007700000 00001007702000 00001010040100 00001010070200 00001012050200 00001012051400 00001012920000 00001012921200 00001012930500")
            (modified "20260709192154")
            (published "20260709192154")
            (role "manual")
            (syntax "zmk")
            (tags "#api #manual #zettelstore")
            (title "API: List all zettel"))
        (rights create read update delete))
    (zettel ...
```

* The result is a list, starting with the symbol ''meta-list''.
* Then, some key/value pairs are following, also nested.
* Keys ''query'' and ''human'' will be explained [[later in this manual|00001012051400]].
* Then comes the list of zettel.
* ''zettel'' itself start, well, a zettel.
** Then comes the zettel identifier, encoded as a string.
** Nested in ''meta'' are the metadata, each as a key/value pair.
** ''rights'' specifies the [[access rights|00001012921200]] the user has for this zettel.

=== Note
This request (and similar others) will always return a list of metadata, provided the request was syntactically correct.
There will never be an HTTP status code 403 (Forbidden), even if [[authentication was enabled|00001010040100]] and you did not provide a valid access token.
In this case, the resulting list might be quite short (some zettel will have [[public visibility|00001010070200]]) or the list might be empty.

With this call, you cannot differentiate between an empty result list (e.g because your search did not find a zettel with the specified term) and an empty list because of missing authorization (e.g. an invalid access token).

=== HTTP Status codes
; ''200''
: Retrieval was successful, the body contains an appropriate data value.
; ''400''
: Request was not valid.
  There are several reasons for this.
  Maybe the access bearer token was not valid.