2025-04-18 01:28:32 +03:00
# ETAPI (REST API)
2025-03-10 21:15:33 +02:00
ETAPI is Trilium's public/external REST API. It is available since Trilium v0.50.
The documentation is in OpenAPI format, available [here ](https://github.com/TriliumNext/Notes/blob/master/src/etapi/etapi.openapi.yaml ).
2025-03-29 12:29:57 +02:00
## API clients
As an alternative to calling the API directly, there are client libraries to simplify this
* [trilium-py ](https://github.com/Nriver/trilium-py ), you can use Python to communicate with Trilium.
2025-03-10 21:15:33 +02:00
2025-04-15 17:56:18 +03:00
## Obtaining a token
All operations with the REST API have to be authenticated using a token. You can get this token either from Options -> ETAPI or programmatically using the `/auth/login` REST call (see the [spec ](https://github.com/TriliumNext/Notes/blob/master/src/etapi/etapi.openapi.yaml )).
2025-03-10 21:15:33 +02:00
## Authentication
2025-04-15 17:56:18 +03:00
### Via the `Authorization` header
2025-03-10 21:15:33 +02:00
```
GET https://myserver.com/etapi/app-info
Authorization: ETAPITOKEN
```
2025-04-15 17:56:18 +03:00
where `ETAPITOKEN` is the token obtained in the previous step.
For compatibility with various tools, it's also possible to specify the value of the `Authorization` header in the format `Bearer ETAPITOKEN` (since 0.93.0).
### Basic authentication
Since v0.56 you can also use basic auth format:
2025-03-10 21:15:33 +02:00
```
GET https://myserver.com/etapi/app-info
Authorization: Basic BATOKEN
```
* Where `BATOKEN = BASE64(username + ':' + password)` - this is a standard Basic Auth serialization
* Where `username` is "etapi"
* And `password` is the generated ETAPI token described above.
2025-03-29 12:29:57 +02:00
Basic Auth is meant to be used with tools which support only basic auth.
## Interaction using Bash scripts
It is possible to write simple Bash scripts to interact with Trilium. As an example, here's how to obtain the HTML content of a note:
2025-04-02 22:34:51 +03:00
```
2025-03-29 12:29:57 +02:00
#!/usr/bin/env bash
# Configuration
TOKEN=z1vA4fkGxjOR_ZXLrZeqHEFOv65yV3882iFCRtNIK9k9iWrHliITNSLQ=
SERVER=http://localhost:8080
# Download a note by ID
NOTE_ID="i6ra4ZshJhgN"
curl "$SERVER/etapi/notes/$NOTE_ID/content" -H "Authorization: $TOKEN"
```
Make sure to replace the values of:
* `TOKEN` with your ETAPI token.
* `SERVER` with the correct protocol, host name and port to your Trilium instance.
* `NOTE_ID` with an existing note ID to download.