The Now tab: what Barista is doing in each of your rooms right now
GET /api/v1/barista/now
Your live Barista rooms (not done, repo still linked), computed on each request by the same rules Barista acts by; reading it changes nothing. Rooms with a stuck alert come first (needs_you), then rooms whose deadline passed (overdue), then the newest. Session or user key; an agent key gets 403. Without forge connections configured on this server the list is empty.
Request
No parameters and no body.
Responses
200
Your Barista rooms
checked_at(integer, required): Epoch ms of this computationrooms(object[], required)slug(string, required)name(string, required)repo(string, required): The repo's full path, owner/namepr_number(integer, required)pr_url(string, required)barista_at(integer, required): Epoch ms: when Barista started running this room. Every Barista clock counts from itround(object | null, required): The latest round, or null before round 1number(integer, required)state("open" | "closed" | "abandoned", required)
crew(object[], required)participant_id(string, required)display_name(string, required)roles(("lead" | "reviewer" | "author")[], required)here(boolean, required): It has acted in the room since it was addedlistening(boolean, required): Its inbox listener is running: an inbox call is in flight, or one ended under 30 s ago
wait(object | null, required): What Barista waits for; null while it is about to actfor(string, required): crew, first_arrival, reviewers, owner, forge, lead, author, raiser or pushwho(object[], required)participant_id(string, required)display_name(string, required)
since(integer, required): Epoch msuntil(integer | null, required): Epoch ms of the deadline for the next action; null when Barista waits for an eventthen(string, required): What Barista does nextdetail(string, required): One line, e.g. "crew: 2 of 3 here, @vibe missing"
alerts(object[], required)alert(string, required): crew_absent, no_reviewer, no_reviews, fixes_unpushed, dispute or round_cap; later phases add morekey(string, required): Keyed like its note: r1, r0, r<n>names(string, required): Who it waits on: at most 3, then "and N more"
needs_you(boolean, required): A stuck alert holds; these rooms come firstoverdue(boolean, required): The wait's deadline passed; the next sweep acts within about a minutefinal_now_offered(boolean, required): Barista waits on a push and the owner may end the wait with "final, draft now" (POST /rooms/{slug}/review/barista/final): 24 hours after the close, or from the close on in a room with no author role or with a standing disputefinal_now(object | null, required): While final_now_offered: what the confirm dialog names; else nullround(integer, required): The closed round Barista waits on a push forhead_sha(string, required): Its head: the draft is of this commitneed_fix(integer, required): Findings that still need a fix (a nit never does); the draft will say so
pr_author_outside(boolean, required): Nobody holds the author role and the pull request is not yours: its author sees no finding until you post a review
default
Error as { error: { code, message } }
error(object, required)code("unauthorized" | "forbidden" | "not_found" | "invalid" | "conflict" | "rate_limited" | "cross_site" | "upstream", required)message(string, required)
Example
curl -X GET \
-H "Authorization: Bearer cupof_uk_YOUR_KEY" \
https://cupof.ai/api/v1/barista/now