What's blocked, and on what
tasks.task.blocked
GET/api/v1/households/{household_id}/queries/tasks.task.blocked
- Query
- Rigel runs it
Open tasks that can't go ahead: marked blocked (maybe waiting until a time), or waiting on an unfinished dependency. Each says why.
Parameters#
| Field | Description |
|---|---|
household_idpathstringrequired | The household's ID. |
Response#
200 The answer.
| Field | Description |
|---|---|
itemsarray of objectsrequired | |
items[].idstringrequired | A task ID, such as tsk_01JC0000000000000000000000. |
items[].titlestringrequired | No description. |
items[].stateone of: todo, doing, blocked, donerequired | todo (to do), doing (someone's on it), blocked (can't go on until something happens) or done. |
items[].priorityinteger or nullrequired | The priority as a number, or null for none. |
items[].priority_wordsone of: Urgent, High, Medium, Low, Someday, null or nullrequired | The priority in words, such as "High", or null for none. |
items[].assigneeobject or nullrequired | Who's doing it, or null for no one yet. |
items[].assignee.idstringrequired | A person ID, such as per_01JC0000000000000000000000. |
items[].assignee.namestringrequired | No description. |
items[].due_datestring (date) or nullrequired | A calendar date, YYYY-MM-DD. |
items[].is_overduebooleanrequired | Not done, and the due date is before today in the household's time zone. |
items[].scheduled_startstring (date-time) or nullrequired | No description. |
items[].scheduled_endstring (date-time) or nullrequired | No description. |
items[].waiting_untilstring (date-time) or nullrequired | For blocked work waiting on someone outside: when to look again. |
items[].is_waiting_overbooleanrequired | Blocked and waiting, and the waiting time has passed: it's back in the queue. |
items[].is_blockedbooleanrequired | Blocked by its state, or by a dependency that isn't done. |
items[].blocked_byarray of objectsrequired | The unfinished tasks this one depends on. |
items[].blocked_by[].idstringrequired | A task ID, such as tsk_01JC0000000000000000000000. |
items[].blocked_by[].titlestringrequired | No description. |
items[].dependent_countintegerrequired | How many unfinished tasks are waiting on this one. |
items[].tagsarray of objectsrequired | |
items[].tags[].idstringrequired | A tag ID, such as tag_01JC0000000000000000000000. |
items[].tags[].namestringrequired | No description. |
items[].parentobject or nullrequired | The task this is a subtask of. |
items[].parent.idstringrequired | A task ID, such as tsk_01JC0000000000000000000000. |
items[].parent.titlestringrequired | No description. |
items[].projectobject or nullrequired | The top-level task this belongs to, when it isn't one itself. |
items[].project.idstringrequired | A task ID, such as tsk_01JC0000000000000000000000. |
items[].project.titlestringrequired | No description. |
items[].subtask_open_countintegerrequired | Unfinished subtasks, at any depth. |
items[].subtask_done_countintegerrequired | Finished subtasks, at any depth. |
items[].duplicate_ofobject or nullrequired | A task, by ID and title. |
items[].duplicate_of.idstringrequired | A task ID, such as tsk_01JC0000000000000000000000. |
items[].duplicate_of.titlestringrequired | No description. |
items[].completed_atstring (date-time) or nullrequired | No description. |
items[].created_atstring (date-time)required | No description. |
items[].updated_atstring (date-time)required | No description. |
items[].labelstringrequired | The task in one line, for reading aloud: "Order shelves · High · Ada · due Nov 20 · blocked by Measure". |
items[].reasonone of: state, dependency, bothrequired | state: marked blocked. dependency: waiting on blocked_by. both. |
Errors#
Every error has the same envelope: error.code, error.message, error.details, error.recovery and error.request_id.
| Status | Code | When |
|---|---|---|
400 | validation_failed | A field is missing, misspelled or out of range. details.fields lists each problem. |
401 | unauthenticated | The request has no valid session. |
404 | not_found | The household doesn't exist, or you aren't a member of it. |
Examples#
These are real. Each was recorded from a sample household, the Okafors, running through the whole API when this site was built.
What's blocked, and on what
curl 'https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/tasks.task.blocked' \
-H "Cookie: rigel_session=$RIGEL_SESSION"const response = await fetch("https://rigel.house/api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/tasks.task.blocked", {
headers: {
Cookie: `rigel_session=${process.env.RIGEL_SESSION}`,
},
});
const data = await response.json();GET /api/v1/households/hh_01M6V9CS6GGVFCY7NAS8ZTQV95/queries/tasks.task.blocked HTTP/1.1
Host: rigel.house
Cookie: rigel_session=<your session>HTTP/1.1 200 OK
Content-Type: application/json
X-Request-Id: req_01M6V9CT5TMW88PCFB0C7075DA
{
"items": [
{
"id": "tsk_01M6V9CT2ZPDDMRBRQ0SBNP1G6",
"title": "Order the shelves",
"state": "todo",
"priority": null,
"priority_words": null,
"assignee": {
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
"due_date": "2026-11-21",
"is_overdue": false,
"scheduled_start": null,
"scheduled_end": null,
"waiting_until": null,
"is_waiting_over": false,
"is_blocked": true,
"blocked_by": [
{
"id": "tsk_01M6V9CT2ZFNJNSQ7DKS5SFHHS",
"title": "Get a carpenter's quote for built-in shelves"
}
],
"dependent_count": 1,
"tags": [],
"parent": {
"id": "tsk_01M6V9CT2Z01QVT17DRMSXTW4W",
"title": "Redo the playroom"
},
"project": {
"id": "tsk_01M6V9CT2Z01QVT17DRMSXTW4W",
"title": "Redo the playroom"
},
"subtask_open_count": 0,
"subtask_done_count": 0,
"duplicate_of": null,
"completed_at": null,
"created_at": "2026-11-07T15:17:52.863Z",
"updated_at": "2026-11-07T15:17:52.863Z",
"label": "Order the shelves · Ada Okafor · due Nov 21 · blocked by Get a carpenter's quote for built-in shelves",
"reason": "dependency"
},
{
"id": "tsk_01M6V9CT2Z2YZR1SSR7XB5H7RF",
"title": "Assemble the shelves",
"state": "todo",
"priority": null,
"priority_words": null,
"assignee": {
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
"due_date": null,
"is_overdue": false,
"scheduled_start": "2026-11-14T16:00:00.000Z",
"scheduled_end": "2026-11-14T18:00:00.000Z",
"waiting_until": null,
"is_waiting_over": false,
"is_blocked": true,
"blocked_by": [
{
"id": "tsk_01M6V9CT2ZPDDMRBRQ0SBNP1G6",
"title": "Order the shelves"
},
{
"id": "tsk_01M6V9CT2ZK0Q2GZQQNSQY33QB",
"title": "Paint the walls"
}
],
"dependent_count": 0,
"tags": [],
"parent": {
"id": "tsk_01M6V9CT2Z01QVT17DRMSXTW4W",
"title": "Redo the playroom"
},
"project": {
"id": "tsk_01M6V9CT2Z01QVT17DRMSXTW4W",
"title": "Redo the playroom"
},
"subtask_open_count": 0,
"subtask_done_count": 0,
"duplicate_of": null,
"completed_at": null,
"created_at": "2026-11-07T15:17:52.863Z",
"updated_at": "2026-11-07T15:17:52.863Z",
"label": "Assemble the shelves · Ben Okafor · blocked by Order the shelves, Paint the walls",
"reason": "dependency"
},
{
"id": "tsk_01M6V9CT2ZFNJNSQ7DKS5SFHHS",
"title": "Get a carpenter's quote for built-in shelves",
"state": "blocked",
"priority": null,
"priority_words": null,
"assignee": {
"id": "per_01M6V9CS6RX26JK5KVYGRN22D2",
"name": "Ada Okafor"
},
"due_date": null,
"is_overdue": false,
"scheduled_start": null,
"scheduled_end": null,
"waiting_until": "2026-11-12T15:17:52.886Z",
"is_waiting_over": false,
"is_blocked": true,
"blocked_by": [],
"dependent_count": 1,
"tags": [],
"parent": {
"id": "tsk_01M6V9CT2Z01QVT17DRMSXTW4W",
"title": "Redo the playroom"
},
"project": {
"id": "tsk_01M6V9CT2Z01QVT17DRMSXTW4W",
"title": "Redo the playroom"
},
"subtask_open_count": 0,
"subtask_done_count": 0,
"duplicate_of": null,
"completed_at": null,
"created_at": "2026-11-07T15:17:52.863Z",
"updated_at": "2026-11-07T15:17:52.886Z",
"label": "Get a carpenter's quote for built-in shelves · Ada Okafor · waiting until Nov 12",
"reason": "state"
},
{
"id": "tsk_01M6V9CT2ZK0Q2GZQQNSQY33QB",
"title": "Paint the walls",
"state": "todo",
"priority": null,
"priority_words": null,
"assignee": {
"id": "per_01M6V9CS744BQQH188FS6CXY9W",
"name": "Ben Okafor"
},
"due_date": null,
"is_overdue": false,
"scheduled_start": null,
"scheduled_end": null,
"waiting_until": null,
"is_waiting_over": false,
"is_blocked": true,
"blocked_by": [
{
"id": "tsk_01M6V9CT2Z2YSDMW6DEKRSS7RW",
"title": "Pick a paint color"
}
],
"dependent_count": 1,
"tags": [],
"parent": {
"id": "tsk_01M6V9CT2Z01QVT17DRMSXTW4W",
"title": "Redo the playroom"
},
"project": {
"id": "tsk_01M6V9CT2Z01QVT17DRMSXTW4W",
"title": "Redo the playroom"
},
"subtask_open_count": 0,
"subtask_done_count": 0,
"duplicate_of": null,
"completed_at": null,
"created_at": "2026-11-07T15:17:52.863Z",
"updated_at": "2026-11-07T15:17:52.863Z",
"label": "Paint the walls · Ben Okafor · blocked by Pick a paint color",
"reason": "dependency"
}
]
}For Rigel#
Rigel's tool for this query is tasks_task_blocked. Rigel runs this on its own, then says what it did. The agent guide has the rest.