Skip to content
view raw .md

Render a Plan home in one request

Build a Dailybot Plan home screen from a single call: counts, your due work, recent boards, goals, projects, attention items and activity, with ETag caching.

Beta

Plan is in beta. Everything under /plan in the web app, the CLI and agent skill commands for projects, goals, boards and tasks, and the /v1/plan/ public API may change before general availability. Want to try it with your team? Write to [email protected].

A home screen usually needs half a dozen lists: counts, your due work, recent boards, goals, projects, what needs attention, recent activity. GET /v1/plan/pulse/ returns all of them in one request, and you opt into the heavier parts with include.

The call

curl -sS "https://api.dailybot.com/v1/plan/pulse/?include=projects,attention,activity,goal_progress" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN"

From the CLI (next release), the same home with all four bands:

dailybot plan tasks status --json

What you always get

Field Use it for
counts Integer tiles: open_tasks, overdue_tasks, blocked_tasks, active_boards, active_projects, active_goals, open_tasks_on_goal_linked_projects
my_preview Your overdue and due_today counts and your top_tasks
recent_boards · featured_boards Board cards to jump back into
goals_preview Goals with their period and status
timeline_teaser What is due soon in a short window
agent_summary Boards where agents act and approvals waiting
unread_count Your unread inbox items
scope Always viewer_visible: everything counts only what you can see

Optional bands

Each include token adds one band. A band you do not ask for is absent and costs nothing:

Token Adds
projects projects_preview: visible live projects with progress and their newest update
attention attention: your open work that is overdue or blocked
activity recent_activity: the newest events, in the same shape as GET /v1/plan/activity/
goal_progress progress and projects on each goals_preview row

An unknown token is 400 invalid_filter_value.

Every tile names its query

When a person clicks a tile, open the list that reproduces it:

Tile List query
Open GET /v1/plan/tasks/?state=open
Overdue GET /v1/plan/tasks/?due_before=<today>&state=open
Blocked GET /v1/plan/tasks/?blocked=true&state=open

The numbers match because the tile and the list apply the same rules to the same visible tasks. The counts are always integers across what you can see; there is no per-person breakdown.

Cache it with ETag

The response carries an ETag. Send it back in If-None-Match on the next refresh; if nothing changed, you get 304 Not Modified and keep what you have:

curl -sS -i "https://api.dailybot.com/v1/plan/pulse/?include=projects,attention,activity,goal_progress" \
  -H "Authorization: Bearer $DAILYBOT_TOKEN" \
  -H "If-None-Match: $ETAG"

Home mode and board-health mode

The same endpoint has a second mode. Add group_by (for example group_by=state) and it returns a board-health aggregate instead: totals, throughput per week and cycle time. Without group_by you always get the home screen described here. include applies to home mode only.

Reference