API Reference
This reference summarizes the implemented NestJS controllers.
Authentication
Users
Entries
Entry Query Parameters
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
Daybreak
Daybreak endpoints require an authenticated bearer token and an active Pro plan.
Dashboard Body
{
"refresh": false,
"tzOffsetMinutes": -120
}
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"
}
The response is:
{
"draft": "**Update**\nPricing was discussed..."
}
Meetings
Meetings endpoints require an authenticated bearer token. They power the Notaday desktop app's live meeting transcription feature: audio is transcribed entirely on-device, and only text ever reaches these endpoints.
Draft Body
{
"transcript": "Ich: ... Andere: ...",
"userNotes": "Preise besprochen, Angebot folgt",
"channelId": "507f1f77bcf86cd799439011",
"language": "de"
}
The response:
{
"draftId": "c3e4...",
"title": "Weekly Sync mit Client X",
"summaryMarkdown": "## Zusammenfassung\n\n...",
"actionItems": [
{ "text": "Angebot verschicken", "suggestedDueDate": "2026-07-18", "confidence": 0.9 }
],
"suggestedTags": ["client-x", "pricing"],
"suggestedMood": "good",
"recurringMatch": { "entryId": "507f...", "title": "Weekly Sync mit Client X" }
}
draftId is a short-lived (30 minute) server-side cache key; letting it expire is
harmless since /meetings/confirm doesn't require the cached draft to still exist.
recurringMatch is only ever a suggestion — nothing is merged automatically.
Confirm Body
{
"draftId": "c3e4...",
"channelId": "507f1f77bcf86cd799439011",
"title": "Weekly Sync mit Client X",
"summaryMarkdown": "## Zusammenfassung\n\n...",
"rawTranscript": "Ich: ... Andere: ...",
"meetingMeta": {
"date": "2026-07-14T10:00:00.000Z",
"durationSec": 1800,
"title": "Weekly Sync mit Client X",
"participants": ["Alex"]
},
"mode": "create",
"appendToEntryId": null,
"acceptedActionItems": [
{ "text": "Angebot verschicken", "dueDate": "2026-07-18T00:00:00.000Z" }
],
"tags": ["client-x", "pricing"]
}
mode: "append" requires appendToEntryId and appends the summary/transcript as a
new dated section on the existing entry instead of creating a new one. Tags are
matched/created by name. The response:
{
"entryId": "507f...",
"taskIds": ["507f...", "507f..."]
}
Channels
Tags
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