
Beta feature
Inbox API is still in beta so expect things to change and/or break. If you find any issues, kindly open an issue on our GitHub repo.
Think of the Inbox API as a private mailbox for your Notesnook account. You give other apps or services a key to drop notes into it, and those notes show up in your Notesnook account the next time you sync — fully encrypted, readable only by you.
You don’t need to be a developer to use it. You can use services like Zapier and IFTTT to send data directly to the Inbox API without writing a single line of code. If you do write code, it’s a single HTTP POST request.
Some common use cases include:
Enable Inbox API toggleSettings > Inbox > Enable Inbox API.
The PGP keys are validated (round-trip encrypt/decrypt) before being saved.
A default API key is created automatically when you enable the Inbox API. You can create up to 10 API keys and revoke them individually.
Create Key in the API Keys sectionSettings > Inbox > View API Keys > +.
Endpoint: POST https://inbox.notesnook.com/
| Header | Type | Status | Description |
|---|---|---|---|
Content-Type | string | Required | Must be application/json |
Authorization | string | Required | Your inbox API key |
| Field | Type | Status | Description |
|---|---|---|---|
title | string | Required | Note title. Minimum 1 character. |
type | string | Required | Entity type. Currently only "note" is supported. |
source | string | Required | Source identifier (e.g., "zapier", "my-app"). |
version | number | Required | Schema version. Must be 1. |
content | object | Optional | Note content. |
content.type | string | Required (if content provided) | Content format. Currently only "html" is supported. |
content.data | string | Required (if content provided) | HTML content string. |
pinned | boolean | Optional | Pin the note. Default: false. |
favorite | boolean | Optional | Mark as favorite. Default: false. |
readonly | boolean | Optional | Make the note read-only. Default: false. |
archived | boolean | Optional | Archive the note. Default: false. |
notebookIds | string[] | Optional | Array of notebook IDs to assign the note to. |
tagIds | string[] | Optional | Array of tag IDs to apply to the note. |
Notebook & Tag IDs
Notebook and Tag IDs can be found by right-clicking on a notebook/tag and selecting Copy ID.
| Limit | Value |
|---|---|
| Max body size | 10 MB |
| Rate limit | 60 requests per minute per IP |
| Status | Body | Condition |
|---|---|---|
200 OK | { "success": true } | Note successfully encrypted and queued. |
400 Bad Request | { "error": "invalid item", "details": [...] } | Request body failed validation. The details array contains field-level errors. |
401 Unauthorized | { "error": "unauthorized" } | Authorization header is missing. |
403 Forbidden | { "error": "inbox public key not found" } | Inbox is not enabled or no PGP public key is associated with your account. |
429 Too Many Requests | — | Rate limit exceeded. Retry after 1 minute. |
500 Internal Server Error | { "error": "internal server error", "description": "..." } | Unexpected server error. |
This Zap sends every new email you receive in your Gmail inbox to your Notesnook account as a note.
1. Create a new Zap and set up the trigger:
2. Add an action step:
3. Configure the Webhooks action:
| Field | Value |
|---|---|
| URL | https://inbox.notesnook.com/ |
| Payload Type | json |
Data — title | (Gmail) Subject |
Data — type | note |
Data — source | zapier-gmail |
Data — version | 1 |
Data — content__type | html |
Data — content__data | (Gmail) Body HTML |
Headers — Authorization | <your-inbox-api-key> |
In Zapier’s nested JSON syntax, use double underscores (__) to represent nested keys. content__type maps to content.type and content__data maps to content.data in the JSON body.
4. Test and activate the Zap. Zapier will POST a note to your Notesnook inbox for every matching email. The note will appear after your next sync.
This Applet sends any email you forward to your IFTTT trigger address into your Notesnook account as a note.
1. Create a new Applet:
[email protected]). Forward any email there to fire the Applet.2. Then that: choose Webhooks → Make a web request.
3. Configure the Webhooks action:
| Field | Value |
|---|---|
| URL | https://inbox.notesnook.com/ |
| Method | POST |
| Content Type | application/json |
| Additional Headers | `Authorization: |
| Body | (see below) |
Use the following JSON body template, substituting IFTTT ingredients:
4. Save the Applet. Any email forwarded to your IFTTT trigger address will be relayed to your Notesnook inbox and appear after the next sync.
Check the self hosting guide here.
Inbox uses OpenPGP asymmetric encryption to ensure your data is encrypted before it ever reaches Notesnook’s servers and can only be decrypted on your own devices. The flow is:
When you enable Inbox from settings:
When data is posted to the Inbox API:
alg: pgp-aes256). The result is an armored PGP ciphertext blob.When your client syncs: