API Reference

This reference summarizes the implemented NestJS controllers.

Authentication

Method Path Description
POST /Auth/google Authenticate with a Google token.
POST /Auth/refresh Refresh access and refresh tokens.
POST /Auth/logout Revoke refresh tokens for logout.
POST /Auth/activate-coupon Activate a Lifetime Pro coupon. Requires auth.
DELETE /Auth/account Delete account and associated data. Requires auth.

Users

Method Path Description
GET /users/me Get current user profile.
POST /users/me/last-shutdown Update the current user's last shutdown date.
POST /users/me/routine-display-mode Set mixed or separate routine display mode.
POST /users/me/hide-journal-timeline Set journal visibility in Timeline.
GET /users/me/api-tokens List active API tokens.
POST /users/me/api-tokens Create an API token.
DELETE /users/me/api-tokens/{id} Revoke an API token.

Entries

Method Path Description
POST /entries Create a task, journal, or routine entry.
GET /entries List entries. Supports filters and optional pagination.
GET /entries/{id} Get one entry.
PATCH /entries/{id} Update an entry.
PATCH /entries/{id}/toggle-complete Toggle completion state.
PATCH /entries/{id}/toggle-backlog Move to or from Backlog.
POST /entries/{id}/connections/{connectionId} Connect two entries.
DELETE /entries/{id}/connections/{connectionId} Remove an entry connection.
DELETE /entries/{id} Delete an entry.
POST /entries/sort Update sort order for multiple entries.

Entry Query Parameters

Parameter Type Description
type string Filter by task, journal, or routine.
category string Filter by category where supported by service behavior.
page number 1-based page number.
limit number Items per page. Defaults to 20 when pagination is used.
completed boolean Filter by completion state.
backlog boolean Filter by backlog state.

Entry Body

{
  "title": "Morning planning session",
  "description": "Review priorities and set intentions for the day",
  "type": "task",
  "timeClass": "",
  "completed": false,
  "backlog": false,
  "connections": [],
  "channelId": "507f1f77bcf86cd799439011",
  "tagIds": ["507f1f77bcf86cd799439012"],
  "dueDate": "2026-05-04T14:00:00.000Z",
  "mood": "great",
  "location": "Home",
  "weather": "sunny",
  "reflectionCategory": "gratitude",
  "sortOrder": 1000
}

Drawing Notes

Method Path Description
POST /entries/{id}/notes Upload a drawing note as multipart field file.
GET /entries/{id}/notes List drawing notes for an entry.
PUT /entries/{id}/notes/{noteId} Replace an existing drawing note file.
GET /entries/{id}/notes/{noteId} Retrieve a note image.
DELETE /entries/{id}/notes/{noteId} Delete a drawing note.

Daybreak

Daybreak endpoints require an authenticated bearer token and an active Pro plan.

Method Path Description
POST /daybreak/dashboard Generate or return the cached AI daily dashboard.
POST /daybreak/journal-draft Turn a short note into a polished journal update draft.

Dashboard Body

{
  "refresh": false,
  "tzOffsetMinutes": -120
}
Field Type Description
refresh boolean When true, forces a fresh generation instead of returning today's cached snapshot.
tzOffsetMinutes number Browser timezone offset from new Date().getTimezoneOffset(), used to calculate the user's local day.

The dashboard response contains generatedAt, date, metrics, greeting, summary, todayFocus, upcoming, and staleJournals.

Journal Draft Body

{
  "prompt": "Call with customer, pricing discussed, follow-up next week",
  "entryId": "ENTRY_ID"
}
Field Type Description
prompt string Required free-form note, 1-2000 characters.
entryId string Optional journal entry ID used as generation context.

The response is:

{
  "draft": "**Update**\nPricing was discussed..."
}

Channels

Method Path Description
POST /channels Create a channel.
GET /channels List channels. Optional includeArchived.
GET /channels/{id} Get one channel.
PATCH /channels/{id} Update a channel.
PATCH /channels/{id}/archive Toggle archive state.
DELETE /channels/{id} Delete a channel.

Tags

Method Path Description
POST /tags Create a tag.
GET /tags List tags. Optional includeArchived.
GET /tags/search/{name} Find a tag by name.
GET /tags/{id} Get one tag.
PATCH /tags/{id} Update a tag.
PATCH /tags/{id}/archive Toggle archive state.
DELETE /tags/{id} Delete a tag.

Swagger

In local development, the backend registers Swagger at:

https://devtest-api.notaday.com/api

In production environment, the backend registers Swagger at:

https://api.notaday.com/api