Plan · Tareas
Crea, lee, actualiza, mueve, archiva y restaura tareas, una a una o en lote, además de relaciones, etiquetas, participantes y suscripciones. Parte de la API de Dailybot Plan (Beta).
En esta página
Beta
Plan está en beta. Todo lo que está bajo /plan en la aplicación web, los comandos del CLI y de la agent skill para proyectos, objetivos, tableros y tareas, y la API pública /v1/plan/ puede cambiar antes de la disponibilidad general. ¿Quieres probarlo con tu equipo? Escribe a [email protected].
Listar las tareas de un tablero (alias de `GET /v1/plan/tasks/?board=`)
Alias de conveniencia para clientes que anidan bajo la URL del tablero. Mismo sobre paginado de Task y misma gramática de filtros compartida que GET /v1/plan/tasks/?board={board_id}. El board_id de la ruta prevalece sobre un parámetro de consulta board= en conflicto.
Prefiere este o ?board= para listas planas; usa GET …/boards/{id}/board/ para la interfaz de instantánea más densa.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| board_id | string | Requerido | El uuid del tablero. |
Parámetros de consulta
Paginación
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
| limit | integer | Opcional | Alias de page_size, traducido en el servidor. |
| offset | integer | Opcional | Alias traducido a page en el servidor. |
Filtros
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| search | string | Opcional | Coincide con el título y la clave. Más de 256 caracteres es 400 search_query_too_long, no se trunca. q es un alias. |
| key_prefix | string | Opcional | Selecciona las tareas de todos los tableros que una clave haya nombrado alguna vez, incluidas las claves retiradas: ?key_prefix=ENG. Un prefijo desconocido devuelve una lista vacía. |
| state | array | Opcional | Repetible; los valores se combinan con OR. Cada valor es o bien un uuid de estado o bien uno de dos tokens de ciclo de vida:
- open - las categorías de estado que no son terminales: backlog, todo, in_progress.
- done - las categorías terminales: done, canceled.
Los tokens se deciden solo por state.category y nunca consultan completed_at, así que un cliente que clasifica las filas por la categoría del chip de estado coincide con este filtro por construcción.
Se permite mezclar: un uuid y un token en la misma solicitud se combinan con OR como cualquier otro valor repetido. Cualquier otro valor es 400 invalid_filter_value con extra.parameter: "state", incluido overdue, que no es un estado del ciclo de vida. Vencido es una cuestión de fecha de vencimiento: consulta due_before. |
| category | array | Opcional | Las cinco categorías de estado fijas. No existe una categoría blocked: estar bloqueado es una relación; usa blocked=true. |
| owner | array | Opcional | Un uuid de usuario, me o unowned. Repetible; los valores se combinan con OR, incluidos los tokens: owner=me&owner=unowned devuelve tus tareas y las que no tienen responsable. me con una key de agente o de la organización es 400 actor_required. |
| label | array | Opcional | uuids de etiquetas: solo v4, como máximo 50, igual que el límite existente del filtro de etiquetas compartido. Un valor que no es v4 es 400 invalid_label_filter. |
| priority | array | Opcional | 1=urgente, 2=alta, 3=media, 4=baja, 5=ninguna. Repetible. |
| parent | string | Opcional | Un uuid de tarea padre, o none para obtener solo tareas de nivel superior. parent_task se acepta como alias de este parámetro (mismo valor). Enviar ambos con valores en conflicto es 400 invalid_filter_value. |
| parent_task | string | Opcional | Alias de parent, preferido por algunos clientes web. Misma gramática (uuid o none). No envíes ambos con valores distintos. |
| blocked | boolean | Opcional | Derivado de las relaciones, no de un estado. Es la consulta que el producto responde con un vínculo en lugar de un estado.
blocked=true significa un bloqueador activo: una relación blocks cuya tarea de origen no está archivada ni en una categoría terminal. Un bloqueador que a su vez está done o canceled no bloquea nada y no coincide.
Independiente del ciclo de vida. Una tarea terminada puede seguir teniendo un bloqueador activo, así que blocked=true por sí solo también devuelve filas terminales. El trabajo sobre el que una persona puede actuar es blocked=true&state=open: esa combinación es la que reproduce el mosaico blocked de GET /v1/plan/pulse/. |
| goal | string | Opcional | Repetible. Coincide con el objetivo propio de una tarea, o con el que hereda de su proyecto cuando no tiene uno, la misma regla que usa cada resumen agregado de progreso. |
| team | string | Opcional | Repetible. El equipo del tablero. Reduce lo que ves y nunca lo amplía. |
| participant | string | Opcional | Repetible. Alguien en la tarjeta, sea responsable o no. |
| created_by | string | Opcional | Repetible. Quién abrió la tarjeta. |
| estimate_min | integer | Opcional | estimate mínimo, inclusive, en las unidades guardadas en la tarea (sin conversión desde la escala del tablero). |
| estimate_max | integer | Opcional | estimate máximo, inclusive, en las unidades guardadas en la tarea (sin conversión desde la escala del tablero). |
Fechas
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| due_before | string | Opcional | Inclusivo. Por sí solo, significa vencido o con vencimiento hasta esa fecha; no excluye el trabajo que ya está terminado.
Vencido se escribe due_before=<today>&state=open. Esa combinación es la forma admitida, es la que reproduce el mosaico overdue de GET /v1/plan/pulse/, y deliberadamente no existe el atajo state=overdue: state es una dimensión del ciclo de vida y vencido es una dimensión de fecha, así que una única forma evita que ambas se desalineen. state=overdue responde 400 invalid_filter_value, lo que dice algo sobre esa forma de escribirlo y no sobre la capacidad. |
| due_after | string | Opcional | Inclusivo. |
| start_after | string | Opcional | Una fecha (YYYY-MM-DD): tareas con start_date igual o posterior, inclusive. Un valor inválido es 400 invalid_filter_value. |
| start_before | string | Opcional | Una fecha (YYYY-MM-DD): tareas con start_date igual o anterior, inclusive. Un valor inválido es 400 invalid_filter_value. |
| completed_after | string | Opcional | Una fecha (YYYY-MM-DD): tareas completadas ese día o después, inclusive (la fecha de completed_at). Un valor inválido es 400 invalid_filter_value. |
| completed_before | string | Opcional | Una fecha (YYYY-MM-DD): tareas completadas ese día o antes, inclusive (la fecha de completed_at). Un valor inválido es 400 invalid_filter_value. |
| has_due_date | boolean | Opcional | false es la primera pregunta del planificador: qué no está programado. |
| has_start_date | boolean | Opcional | true conserva las tareas con start_date; false, las que no tienen. |
| has_dates | boolean | Opcional | Ambos extremos de la planificación a la vez. has_dates=false significa ninguna: ni fecha de inicio ni fecha de vencimiento (la bandeja sin programar). has_dates=true significa al menos una, que no es lo mismo que has_due_date=true. |
| updated_since | string | Opcional | Un filtro de marca de tiempo sobre esta lista paginada: devuelve {count, next, previous, results}, nunca un cursor. Para un feed de cambios usa el endpoint delta del tablero. |
| start_date | string | Opcional | Inicio de la ventana de fecha de creación. Es lo que produce --since del CLI. |
| end_date | string | Opcional | Fin de la ventana de fecha de creación. Es lo que produce --until del CLI. |
Filas archivadas
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| is_archived | boolean | Opcional | true devuelve solo las filas archivadas; false (por defecto), solo las activas. Archivar es la eliminación, así que las filas archivadas siguen siendo legibles. |
| include_archived | boolean | Opcional | Incluye las filas archivadas junto con las activas. Es distinto de is_archived, que selecciona un conjunto u otro: include_archived=true es la unión. Las listas devuelven filas activas a menos que lo pidas. |
Orden y expansión
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| sort | string | Opcional | Un campo, opcionalmente con prefijo -. Todo orden agrega un desempate interno estable para que una fila no pueda aparecer en dos páginas. Un valor no admitido es 400 invalid_sort, nunca una alternativa silenciosa. |
Objeto Task
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| uuid | uuid | Requerido | Identificador público estable. |
| key | string | Requerido | Clave legible KEY-n, por ejemplo ENG-142. Las claves retiradas siguen resolviéndose. |
| title | string | Requerido | El título de la tarea. Máx. 255 caracteres. |
| description | string | null | Opcional | Descripción libre. |
| board | uuid | Opcional | El tablero. |
| state | WorkflowState | Requerido | El estado de la tarea (su columna). Ver WorkflowState. |
| priority | integer | Opcional | 1 urgente, 2 alta, 3 media, 4 baja, 5 ninguna. De 1 a 5. |
| estimate | integer | null | Opcional | Estimación en la escala del tablero. |
| owner | UserRef | null | Opcional | La persona responsable de la tarea. Ver UserRef. |
| executor | ActorRef | null | Opcional | El actor que hace el trabajo, cuando es distinto del responsable (por ejemplo, un agente). Ver ActorRef. |
| executors | object[] | Opcional | Cada agente que ejecutó una escritura en esta tarea en nombre de alguien, del más reciente al más antiguo: {uuid, name, username, avatar, first_at, last_at}. Es distinto de executor, que sigue siendo quien tiene la pelota ahora. Solo en el detalle de la tarea y en las respuestas de escritura de una sola tarea; no viene en las filas de listas. |
| participant_count | integer | Opcional | Número de participantes. |
| start_date | date | null | Opcional | Fecha de inicio planificada. |
| due_date | date | null | Opcional | Fecha de vencimiento. |
| milestone | null | {uuid, name, date} | Opcional | El hito al que cuenta esta tarea. Todos los campos están siempre presentes. |
| parent_task | null | {uuid, key, title} | Opcional | La tarea padre, para una subtarea. Solo un nivel de anidación. Todos los campos están siempre presentes. |
| subtask_count | integer | Opcional | Número de subtareas. |
| subtask_done_count | integer | Opcional | Número de subtareas terminadas. |
| attachment_count | integer | Opcional | Número de adjuntos. |
| open_blocker_count | integer | Opcional | Número de bloqueos activos. |
| labels | array<Label> | Opcional | Etiquetas de la organización en la tarea. Ver Label. |
| rank | string | null | Opcional | Orden opaco dentro de la columna. Nunca lo calcules: mueve con after / before. |
| blocked | boolean | Opcional | Tareas con un bloqueo activo. |
| blocked_since | date-time | null | Opcional | Cuándo se bloqueó la tarea. |
| completed_at | date-time | null | Opcional | Cuándo se completó, o null. |
| is_archived | boolean | Requerido | Si la fila está archivada. Archivar es la forma de eliminar: las filas archivadas siguen siendo legibles y se pueden restaurar. |
| subscribed | boolean | Opcional | Si observas esta tarea. |
| version | integer | Requerido | Se incrementa en cada escritura. Devuélvelo como If-Match para rechazar una actualización desactualizada. |
| created_by | ActorRef | null | Opcional | Quién creó la fila. Ver ActorRef. |
| created_at | date-time | Opcional | Cuándo se creó la fila. |
| updated_at | date-time | Opcional | Cuándo cambió la fila por última vez. |
Objeto WorkflowState
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| uuid | uuid | Requerido | Identificador público estable. |
| name | string | Requerido | Nombre visible. Máx. 48 caracteres. |
| category | enum | Requerido | Una de las cinco categorías fijas. Nunca cambia después de crearse. Uno de backlog, todo, in_progress, done, canceled. |
| position | integer | Requerido | Posición de la columna, de izquierda a derecha. Mínimo 0. |
| color | string | Opcional | Color de visualización (hex). |
| is_default | boolean | Opcional | Si las tareas nuevas llegan a este estado de forma predeterminada. |
| is_archived | boolean | Opcional | Si la fila está archivada. Archivar es la forma de eliminar: las filas archivadas siguen siendo legibles y se pueden restaurar. |
| task_count | integer | Opcional | Número de tareas activas. |
Objeto UserRef
Objeto ActorRef
Objeto Label
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<Task> | Requerido | Las filas de esta página. Ver Task. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/tasks/?state=open" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan board tasks 00000000-0000-4000-8000-000000000002 --page 2{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000005",
"key": "ENG-142",
"title": "Ship the delta feed",
"description": null,
"board": "00000000-0000-4000-8000-000000000002",
"state": {
"uuid": "00000000-0000-4000-8000-000000000003",
"name": "In Progress",
"category": "in_progress",
"position": 2
},
"priority": 2,
"estimate": 3,
"owner": {
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"executor": null,
"participant_count": 1,
"start_date": "2026-09-28",
"due_date": "2026-10-15",
"milestone": null,
"parent_task": null,
"subtask_count": 1,
"subtask_done_count": 1,
"attachment_count": 1,
"open_blocker_count": 1,
"labels": [],
"rank": "aU",
"blocked": false,
"blocked_since": null,
"completed_at": null,
"is_archived": false,
"subscribed": true,
"version": 7,
"created_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"created_at": "2026-09-25T10:14:02Z",
"updated_at": "2026-09-25T10:14:02Z"
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Crear una tarea en este tablero (alias de `POST /v1/plan/tasks/`)
La misma semántica de creación que POST /v1/plan/tasks/, con el tablero tomado de la ruta (board en el cuerpo es opcional y se sobrescribe).
Idempotency-Key es opcional y recomendado.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| board_id | string | Requerido | El uuid del tablero. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| milestone | uuid | null | Opcional | Todavía no se acepta al crear (501 not_implemented): asigna el hito con PATCH después de crear la tarea. |
| title | string | Requerido | El título de la tarea. Máx. 255 caracteres. |
| description | string | null | Opcional | Descripción libre. Máx. 50000 caracteres. |
| priority | integer | Opcional | 1 urgente, 2 alta, 3 media, 4 baja, 5 ninguna. De 1 a 5. |
| estimate | integer | null | Opcional | Estimación en la escala del tablero. |
| owner | string | null | Opcional | El uuid de usuario del responsable. La persona ya debe poder ver el tablero (de lo contrario, 400 participant_cannot_access_board). |
| start_date | date | null | Opcional | Fecha de inicio planificada. |
| due_date | date | null | Opcional | Fecha de vencimiento. |
| parent_task | uuid | null | Opcional | La tarea padre, para una subtarea. Solo un nivel de anidación. |
| label_uuids | array | Opcional | uuids de las etiquetas que se asignan a la tarea. Elementos: uuid. |
| after | uuid | null | Opcional | Coloca el pin justo debajo de este pin. |
| before | uuid | null | Opcional | Coloca el pin justo encima de este pin. |
| version | integer | Opcional | La versión que cargaste. Un valor desactualizado devuelve 409 version_conflict. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Task | Requerido | Un objeto Task. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 409 | Conflicto. El `code` de la respuesta indica cuál (por ejemplo, `version_conflict`). |
curl -sS -X POST "https://api.dailybot.com/v1/plan/boards/00000000-0000-4000-8000-000000000002/tasks/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"title": "Ship the delta feed",
"priority": 2
}'dailybot plan task create -t "Ship the delta feed" -b 00000000-0000-4000-8000-000000000002Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Listar tareas con la gramática de filtros compartida
Con varios valores, se aplica OR dentro de un parámetro y AND entre parámetros. Un parámetro desconocido se ignora; un valor no interpretable de un parámetro conocido es 400 invalid_filter_value.
Parámetros de consulta
Paginación
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
| limit | integer | Opcional | Alias de page_size, traducido en el servidor. |
| offset | integer | Opcional | Alias traducido a page en el servidor. |
Filtros
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| search | string | Opcional | Coincide con el título y la clave. Más de 256 caracteres es 400 search_query_too_long, no se trunca. q es un alias. |
| board | array | Opcional | uuids de tableros o claves de tableros (ENG). Repetible; los valores se combinan con OR. Las claves se resuelven solo dentro de tu organización; una clave que no corresponde a ninguno de tus tableros no aporta nada y nunca devuelve un 404. Las claves retiradas se siguen resolviendo. |
| key_prefix | string | Opcional | Selecciona las tareas de todos los tableros que una clave haya nombrado alguna vez, incluidas las claves retiradas: ?key_prefix=ENG. Un prefijo desconocido devuelve una lista vacía. |
| project | array | Opcional | uuids de proyectos. Repetible; los valores se combinan con OR. |
| state | array | Opcional | Repetible; los valores se combinan con OR. Cada valor es o bien un uuid de estado o bien uno de dos tokens de ciclo de vida:
- open - las categorías de estado que no son terminales: backlog, todo, in_progress.
- done - las categorías terminales: done, canceled.
Los tokens se deciden solo por state.category y nunca consultan completed_at, así que un cliente que clasifica las filas por la categoría del chip de estado coincide con este filtro por construcción.
Se permite mezclar: un uuid y un token en la misma solicitud se combinan con OR como cualquier otro valor repetido. Cualquier otro valor es 400 invalid_filter_value con extra.parameter: "state", incluido overdue, que no es un estado del ciclo de vida. Vencido es una cuestión de fecha de vencimiento: consulta due_before. |
| category | array | Opcional | Las cinco categorías de estado fijas. No existe una categoría blocked: estar bloqueado es una relación; usa blocked=true. |
| owner | array | Opcional | Un uuid de usuario, me o unowned. Repetible; los valores se combinan con OR, incluidos los tokens: owner=me&owner=unowned devuelve tus tareas y las que no tienen responsable. me con una key de agente o de la organización es 400 actor_required. |
| label | array | Opcional | uuids de etiquetas: solo v4, como máximo 50, igual que el límite existente del filtro de etiquetas compartido. Un valor que no es v4 es 400 invalid_label_filter. |
| priority | array | Opcional | 1=urgente, 2=alta, 3=media, 4=baja, 5=ninguna. Repetible. |
| parent | string | Opcional | Un uuid de tarea padre, o none para obtener solo tareas de nivel superior. parent_task se acepta como alias de este parámetro (mismo valor). Enviar ambos con valores en conflicto es 400 invalid_filter_value. |
| parent_task | string | Opcional | Alias de parent, preferido por algunos clientes web. Misma gramática (uuid o none). No envíes ambos con valores distintos. |
| blocked | boolean | Opcional | Derivado de las relaciones, no de un estado. Es la consulta que el producto responde con un vínculo en lugar de un estado.
blocked=true significa un bloqueador activo: una relación blocks cuya tarea de origen no está archivada ni en una categoría terminal. Un bloqueador que a su vez está done o canceled no bloquea nada y no coincide.
Independiente del ciclo de vida. Una tarea terminada puede seguir teniendo un bloqueador activo, así que blocked=true por sí solo también devuelve filas terminales. El trabajo sobre el que una persona puede actuar es blocked=true&state=open: esa combinación es la que reproduce el mosaico blocked de GET /v1/plan/pulse/. |
| goal | string | Opcional | Repetible. Coincide con el objetivo propio de una tarea, o con el que hereda de su proyecto cuando no tiene uno, la misma regla que usa cada resumen agregado de progreso. |
| team | string | Opcional | Repetible. El equipo del tablero. Reduce lo que ves y nunca lo amplía. |
| participant | string | Opcional | Repetible. Alguien en la tarjeta, sea responsable o no. |
| created_by | string | Opcional | Repetible. Quién abrió la tarjeta. |
| estimate_min | integer | Opcional | estimate mínimo, inclusive, en las unidades guardadas en la tarea (sin conversión desde la escala del tablero). |
| estimate_max | integer | Opcional | estimate máximo, inclusive, en las unidades guardadas en la tarea (sin conversión desde la escala del tablero). |
Fechas
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| due_before | string | Opcional | Inclusivo. Por sí solo, significa vencido o con vencimiento hasta esa fecha; no excluye el trabajo que ya está terminado.
Vencido se escribe due_before=<today>&state=open. Esa combinación es la forma admitida, es la que reproduce el mosaico overdue de GET /v1/plan/pulse/, y deliberadamente no existe el atajo state=overdue: state es una dimensión del ciclo de vida y vencido es una dimensión de fecha, así que una única forma evita que ambas se desalineen. state=overdue responde 400 invalid_filter_value, lo que dice algo sobre esa forma de escribirlo y no sobre la capacidad. |
| due_after | string | Opcional | Inclusivo. |
| start_after | string | Opcional | Una fecha (YYYY-MM-DD): tareas con start_date igual o posterior, inclusive. Un valor inválido es 400 invalid_filter_value. |
| start_before | string | Opcional | Una fecha (YYYY-MM-DD): tareas con start_date igual o anterior, inclusive. Un valor inválido es 400 invalid_filter_value. |
| completed_after | string | Opcional | Una fecha (YYYY-MM-DD): tareas completadas ese día o después, inclusive (la fecha de completed_at). Un valor inválido es 400 invalid_filter_value. |
| completed_before | string | Opcional | Una fecha (YYYY-MM-DD): tareas completadas ese día o antes, inclusive (la fecha de completed_at). Un valor inválido es 400 invalid_filter_value. |
| has_due_date | boolean | Opcional | false es la primera pregunta del planificador: qué no está programado. |
| has_start_date | boolean | Opcional | true conserva las tareas con start_date; false, las que no tienen. |
| has_dates | boolean | Opcional | Ambos extremos de la planificación a la vez. has_dates=false significa ninguna: ni fecha de inicio ni fecha de vencimiento (la bandeja sin programar). has_dates=true significa al menos una, que no es lo mismo que has_due_date=true. |
| updated_since | string | Opcional | Un filtro de marca de tiempo sobre esta lista paginada: devuelve {count, next, previous, results}, nunca un cursor. Para un feed de cambios usa el endpoint delta del tablero. |
| start_date | string | Opcional | Inicio de la ventana de fecha de creación. Es lo que produce --since del CLI. |
| end_date | string | Opcional | Fin de la ventana de fecha de creación. Es lo que produce --until del CLI. |
Filas archivadas
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| is_archived | boolean | Opcional | true devuelve solo las filas archivadas; false (por defecto), solo las activas. Archivar es la eliminación, así que las filas archivadas siguen siendo legibles. |
| include_archived | boolean | Opcional | Incluye las filas archivadas junto con las activas. Es distinto de is_archived, que selecciona un conjunto u otro: include_archived=true es la unión. Las listas devuelven filas activas a menos que lo pidas. |
Orden y expansión
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| sort | string | Opcional | Un campo, opcionalmente con prefijo -. Todo orden agrega un desempate interno estable para que una fila no pueda aparecer en dos páginas. Un valor no admitido es 400 invalid_sort, nunca una alternativa silenciosa. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<Task> | Requerido | Las filas de esta página. Ver Task. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
curl -sS "https://api.dailybot.com/v1/plan/tasks/?board=ENG&state=open&owner=me" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan task list --board ENG --state open --owner me --jsonProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Crear una tarea
La clave (ENG-143) se asigna desde el contador del tablero y nunca se reutiliza, ni siquiera después de archivar.
Cuando se define owner, esa persona ya debe poder ver el tablero; de lo contrario, la llamada se rechaza con 400 participant_cannot_access_board y no se escribe nada.
La ubicación es relativa: after o before indica una tarea visible en la columna de destino (como máximo uno de los dos); omite ambos para agregar al final. Nunca se acepta un rank en bruto.
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| board | uuid | Requerido | El tablero: su uuid o su clave (ENG). |
| milestone | uuid | null | Opcional | Todavía no se acepta al crear (501 not_implemented): asigna el hito con PATCH después de crear la tarea. |
| title | string | Requerido | El título de la tarea. Máx. 255 caracteres. |
| description | string | null | Opcional | Descripción libre. Máx. 50000 caracteres. |
| priority | integer | Opcional | 1 urgente, 2 alta, 3 media, 4 baja, 5 ninguna. De 1 a 5. |
| estimate | integer | null | Opcional | Estimación en la escala del tablero. |
| owner | string | null | Opcional | El uuid de usuario del responsable. La persona ya debe poder ver el tablero (de lo contrario, 400 participant_cannot_access_board). |
| start_date | date | null | Opcional | Fecha de inicio planificada. |
| due_date | date | null | Opcional | Fecha de vencimiento. |
| parent_task | uuid | null | Opcional | La tarea padre, para una subtarea. Solo un nivel de anidación. |
| label_uuids | array | Opcional | uuids de las etiquetas que se asignan a la tarea. Elementos: uuid. |
| after | uuid | null | Opcional | Coloca el pin justo debajo de este pin. |
| before | uuid | null | Opcional | Coloca el pin justo encima de este pin. |
| version | integer | Opcional | La versión que cargaste. Un valor desactualizado devuelve 409 version_conflict. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Task | Requerido | Un objeto Task. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 409 | Conflicto. El `code` de la respuesta indica cuál (por ejemplo, `version_conflict`). |
| 422 | No se pudo aplicar la solicitud (`column_too_large`). |
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"board": "00000000-0000-4000-8000-000000000002",
"title": "Ship the delta feed",
"priority": 2,
"due_date": "2026-10-15"
}'dailybot plan task create -t "Ship the delta feed" -b 00000000-0000-4000-8000-000000000002 --owner me --priority 2Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Crear hasta 100 tareas, o aplicarles una operación
Registrado ANTES de la ruta de detalle {task_id}, o bulk se interpretaría como un identificador. La atomicidad es por elemento, no por lote: la respuesta informa cada elemento por separado y el estado HTTP describe si el lote fue aceptado, no si todos los elementos se aplicaron. Idempotency-Key es obligatorio: un movimiento masivo que se aplica a medias dos veces deja el tablero corrupto.
La operación restore es la forma por lotes de POST .../tasks/{task_id}/restore/ y sigue las mismas reglas.
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| dry_run | boolean | Opcional | Ejecuta la llamada y la revierte. Responde {operation, dry_run, reversible, consequence, affects{tasks}, items[{index, task, key, changes{field:{from,to}}}], refused[{index, code, detail}]}. No se necesita Idempotency-Key. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Requerido | Obligatorio en operaciones masivas: un lote que se aplica a medias dos veces deja el tablero corrupto. Si falta, devuelve 400 idempotency_key_required. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| operation | enum | Requerido | La operación a aplicar. Uno de move, update, archive, restore, create, set_labels. Alias: set_owner, set_priority, set_due_date, set_parent (→ update); delete (→ archive). |
| board | uuid | Opcional | El tablero. Obligatorio cuando operation es create. |
| items | array (max 100): mutate items {task (uuid or KEY-n, required), state, after, before, owner, priority 1-5, due_date, version, label_uuids (or labels), parent_task}; create items {title (≤512, required), description, state, owner, priority, estimate, start_date, due_date, external_id} | Requerido | Hasta 100 elementos. |
| position | enum | Opcional | Solo con create: dónde quedan las tareas nuevas en cada columna. start las pone arriba, en el orden de los elementos; end, abajo. Uno de start, end. Valor por defecto end. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Objeto BulkResponse
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| succeeded | integer | Requerido | Elementos que se aplicaron correctamente. |
| failed | integer | Requerido | Elementos que fallaron. |
| results | array | Requerido | Las filas de esta página. Siempre presentes: task, status. Elementos: {task: string, status: string, version: integer|null, code: string|null, detail: string|null, extra: object, external_id?: string, key?: string}. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | BulkResponse | Requerido | Un objeto BulkResponse. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | Falta `Idempotency-Key` (`idempotency_key_required`), hay más de 100 elementos (`too_many_items`) o el payload no es válido. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 409 | El mismo `Idempotency-Key` todavía está en ejecución (`idempotency_in_progress`) o se usó con un cuerpo distinto (`idempotency_key_payload_mismatch`). |
| 429 | Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/bulk/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"operation": "create",
"board": "00000000-0000-4000-8000-000000000002",
"items": [
{
"title": "Write the migration guide",
"external_id": "row-1"
},
{
"title": "Record the demo",
"external_id": "row-2"
}
]
}'dailybot plan task bulk --operation create --board 00000000-0000-4000-8000-000000000002 -f tasks.json --dry-run
dailybot plan task bulk --operation create --board 00000000-0000-4000-8000-000000000002 -f tasks.json{
"succeeded": 1,
"failed": 1,
"results": [
{
"task": "ENG-142",
"status": "ok",
"version": 8
},
{
"task": "ENG-9",
"status": "error",
"code": "version_conflict",
"detail": "This task changed since you loaded it.",
"extra": {
"current_version": 4
}
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 30 llamadas masivas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Obtener una tarea por uuid o por KEY-n
Identifica la tarea por uuid o por clave. Una tarea archivada sigue siendo legible para cualquiera que pueda ver su tablero; no hace falta include_archived en una lectura directa. El ETag lleva la versión de la tarea.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| include | string | Opcional | Tokens de inclusión separados por comas en el detalle de la tarea. Permitidos: children, relations, participants, attachments, comment_count, activity, comments.
Cada colección incluida es la primera página del endpoint de lista correspondiente (activity corresponde a /tasks/{id}/activity/; comments corresponde a /tasks/{id}/comments/).
Los tokens desconocidos devuelven 400 invalid_filter_value. Un valor vacío (?include=) se trata como sin inclusiones (200). Las inclusiones no cambian el ETag de la tarea (solo depende de la versión). |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| If-None-Match | string | Opcional | El ETag de tu lectura anterior. Si coincide, responde 304. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Task | Requerido | Un objeto Task. |
Errores
| Estado | Cuándo |
|---|---|
| 304 | Sin cambios: el ETag que enviaste en `If-None-Match` sigue coincidiendo. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS "https://api.dailybot.com/v1/plan/tasks/ENG-142/?include=relations,participants" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan task get ENG-142 --jsonProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Actualizar una tarea
Envía If-Match con la versión que cargaste para detectar una actualización perdida. Sin él, la escritura es de tipo "la última gana" y aun así devuelve la nueva versión.
Los campos desconocidos en el cuerpo devuelven 400 (nunca un 200 silencioso). is_archived no se acepta en PATCH: usa POST …/archive/ o POST …/restore/.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| If-Match | string | Opcional | La version que cargaste, como validador entre comillas (o envíala en el campo version del cuerpo). Un valor desactualizado es 409 version_conflict con extra.current_version; enviar ambos con valores distintos es 400 version_precondition_ambiguous. Si se omite, la última escritura gana. |
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| board | uuid | Opcional | El tablero. |
| milestone | uuid | null | Opcional | El hito al que cuenta esta tarea. |
| title | string | Opcional | El título de la tarea. Máx. 255 caracteres. |
| description | string | null | Opcional | Descripción libre. Máx. 50000 caracteres. |
| priority | integer | Opcional | 1 urgente, 2 alta, 3 media, 4 baja, 5 ninguna. De 1 a 5. |
| estimate | integer | null | Opcional | Estimación en la escala del tablero. |
| owner | string | null | Opcional | El uuid de usuario del responsable. La persona ya debe poder ver el tablero (de lo contrario, 400 participant_cannot_access_board). |
| start_date | date | null | Opcional | Fecha de inicio planificada. |
| due_date | date | null | Opcional | Fecha de vencimiento. |
| parent_task | uuid | null | Opcional | La tarea padre, para una subtarea. Solo un nivel de anidación. |
| label_uuids | array | Opcional | uuids de las etiquetas que se asignan a la tarea. Elementos: uuid. |
| after | uuid | null | Opcional | Coloca el pin justo debajo de este pin. |
| before | uuid | null | Opcional | Coloca el pin justo encima de este pin. |
| version | integer | Opcional | La versión que cargaste. Un valor desactualizado devuelve 409 version_conflict. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Task | Requerido | Un objeto Task. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
| 409 | La tarea cambió desde que la cargaste (`version_conflict`); `extra.current_version` contiene la nueva versión. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/tasks/ENG-142/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H 'If-Match: "7"' \
-H "Content-Type: application/json" \
-d '{
"owner": "00000000-0000-4000-8000-00000000000c",
"due_date": "2026-10-22"
}'dailybot plan task update ENG-142 --priority 1 --due 2026-10-01
dailybot plan task set-owner ENG-142 meProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Archivar una tarea (alias con DELETE)
DELETE es un alias de archivar: la tarea y sus subtareas se archivan (204). Las tareas ya archivadas devuelven 204 de forma idempotente. Prefiere POST …/archive/ cuando necesites que se devuelva el cuerpo archivado. La concurrencia (If-Match) no se aplica en este alias; usa PATCH para actualizaciones con versión antes de archivar si hace falta.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/tasks/ENG-142/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan task delete ENG-142 --yes # archives the taskProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Listar las subtareas directas de una tarea
Tarjetas de tareas paginadas (misma forma que la lista de tareas o la instantánea del tablero). El orden por defecto es created_at (el rango tiene alcance de columna, así que las subtareas en estados distintos no se ordenan entre sí). Pasa ?sort=rank o ?ordering=rank cuando todas las subtareas comparten una columna. Los valores de orden no admitidos son 400 invalid_sort (nunca se ignoran en silencio). Para arrastrar entre hermanas se usa POST …/move/ con after / before. Solo un nivel de anidación: las subtareas de subtareas se rechazan al escribir con subtask_depth_exceeded.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
| sort | string | Opcional | Un campo, opcionalmente con prefijo -. Todo orden agrega un desempate interno estable para que una fila no pueda aparecer en dos páginas. Un valor no admitido es 400 invalid_sort, nunca una alternativa silenciosa. |
| ordering | string | Opcional | Alias web de sort en la lista de subtareas. Misma lista permitida y misma semántica de rechazo: los valores no admitidos son 400 invalid_sort, nunca se ignoran en silencio. No envíes ambos parámetros con valores en conflicto. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<Task> | Requerido | Las filas de esta página. Ver Task. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS "https://api.dailybot.com/v1/plan/tasks/ENG-142/children/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan task children ENG-142Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Archivar una tarea y sus subtareas
Archivar deja en null el rank de la tarea, así que sale de todo orden del tablero sin salir de la tabla. Las relaciones y los participantes se conservan.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| dry_run | boolean | Opcional | Previsualiza la consecuencia sin ejecutarla. La respuesta tiene la misma forma, {operation, dry_run, reversible, restore_path, consequence, affects}, pero no se escribe nada ni se emite ningún evento. Muestra consequence a una persona antes de actuar. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Objeto DryRunPreview
Lo que responde la llamada con ?dry_run=true: la consecuencia, sin ejecutarla. No se escribe nada ni se emite ningún evento.
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| operation | string | Requerido | La operación que se ejecutaría. |
| dry_run | boolean | Requerido | Siempre true. |
| reversible | boolean | Requerido | Si la operación se puede deshacer. |
| restore_path | string | null | Requerido | La ruta que la desharía, o null cuando no hay ninguna. |
| consequence | string | Requerido | Una frase para mostrarle a una persona antes de actuar. Describe el efecto en cascada en lugar de resumirlo. |
| affects | object | Requerido | Lo que tocaría la operación, como conteos (enteros) por tipo. |
| would_refuse | boolean | Opcional | Solo al archivar un estado del flujo de trabajo: true cuando la llamada real se rechazaría. |
| refusal_code | string | Opcional | Solo al archivar un estado del flujo de trabajo: el código de error con el que respondería la llamada real. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Task | DryRunPreview | Requerido | Un objeto Task. Con ?dry_run=true, un objeto DryRunPreview en su lugar. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
| 409 | Conflicto. El `code` de la respuesta indica cuál (por ejemplo, `version_conflict`). |
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/ENG-142/archive/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan task archive ENG-142 --dry-run
dailybot plan task archive ENG-142 --yesProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Duplicar una tarea en el mismo tablero
Crea una tarea nueva en la misma columna. El include predeterminado copia title, description y labels. Emite task.created.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| include | array | Opcional | Qué copiar. Predeterminado: title, description, labels. Elementos: enum title|description|labels|priority|estimate|owner|start_date|due_date. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Task | Requerido | Un objeto Task. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | La tarea está archivada (`task_delete_forbidden`): restáurala antes de duplicarla. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/ENG-142/duplicate/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"include": [
"title",
"description",
"labels"
]
}'dailybot plan task duplicate ENG-142 --include title --include descriptionProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Mover una tarea a otro tablero
El cuerpo requiere board (uuid del tablero destino). Resolución de la columna destino: state explícito, o state_map de uuid de columna de origen → uuid de columna destino, o la misma category en el tablero destino. Emite task.moved (con from_board_uuid al cambiar de tablero). Las correspondencias inválidas devuelven 400 move_board_state_invalid.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| If-Match | string | Opcional | La version que cargaste, como validador entre comillas (o envíala en el campo version del cuerpo). Un valor desactualizado es 409 version_conflict con extra.current_version; enviar ambos con valores distintos es 400 version_precondition_ambiguous. Si se omite, la última escritura gana. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| board | uuid | Requerido | El tablero. |
| state | uuid | Opcional | El estado de la tarea (su columna). |
| state_map | object | Opcional | uuid de la columna de origen → uuid de la columna de destino. |
| version | integer | Opcional | La versión que cargaste. Un valor desactualizado devuelve 409 version_conflict. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Task | Requerido | Un objeto Task. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
| 409 | La tarea cambió desde que la cargaste (`version_conflict`). |
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/ENG-142/move-board/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"board": "00000000-0000-4000-8000-000000000012"
}'dailybot plan task move ENG-142 --board 00000000-0000-4000-8000-000000000012Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Mover una tarea a un estado y una posición relativa
La única forma de cambiar el estado de una tarea. La posición es un vecino, no un número, así que si dos personas arrastran la misma tarjeta a la vez, ambas producen un orden válido. Como máximo se puede indicar uno de after / before; si ambos son null, se agrega al final de la columna. Una escritura, un evento task.moved. Envía If-Match (o version) para rechazar un movimiento desactualizado.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| If-Match | string | Opcional | La version que cargaste, como validador entre comillas (o envíala en el campo version del cuerpo). Un valor desactualizado es 409 version_conflict con extra.current_version; enviar ambos con valores distintos es 400 version_precondition_ambiguous. Si se omite, la última escritura gana. |
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| state | uuid | Requerido | El estado de la tarea (su columna). |
| board | uuid | null | Opcional | El tablero. |
| after | uuid | null | Opcional | Coloca el pin justo debajo de este pin. |
| before | uuid | null | Opcional | Coloca el pin justo encima de este pin. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Task | Requerido | Un objeto Task. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
| 409 | La tarea cambió desde que la cargaste (`version_conflict`), o un vecino indicado se movió (`rank_neighbor_missing`). La respuesta indica el primer y el último elemento actuales de la columna para que puedas reintentar. |
| 422 | No se pudo aplicar la solicitud (`column_too_large`). |
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/ENG-142/move/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"state": "00000000-0000-4000-8000-000000000004",
"after": null,
"before": null
}'dailybot plan task move ENG-142 --state doneProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Las relaciones de una tarea, en ambas direcciones
blocked_by no se almacena: es la lectura inversa de blocks, así que hay exactamente una fila por hecho y las dos direcciones no pueden contradecirse. El campo direction indica de qué lado estás.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Objeto TaskRelation
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| uuid | uuid | Requerido | Identificador público estable. |
| relation_type | enum | Requerido | blocks, relates_to o duplicates. Pueden agregarse tipos nuevos: ignora los que no reconozcas. Uno de blocks, relates_to, duplicates. |
| direction | enum | null | Requerido | outgoing cuando esta tarea es el origen, incoming cuando es el destino. Uno de outgoing, incoming. |
| other_task | object | Requerido | La tarea del otro lado. Forma: {uuid, key, title, state_category}. |
| created_at | date-time | Opcional | Cuándo se creó la fila. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<TaskRelation> | Requerido | Las filas de esta página. Ver TaskRelation. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS "https://api.dailybot.com/v1/plan/tasks/ENG-142/relations/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan task relations ENG-142 --json{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-00000000000a",
"relation_type": "blocks",
"direction": "outgoing",
"other_task": {},
"created_at": "2026-09-25T10:14:02Z"
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Vincular dos tareas
Vincula esta tarea con otra. Envía relation_type (blocks, relates_to o duplicates) y target_task, un uuid de tarea o una clave como ENG-142; una tarea que no puedes ver es 404. kind y target son alias obsoletos de esos dos campos: enviar un alias y su campo con valores distintos es 400. Un vínculo que ya existe o que crearía un ciclo es 409.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| relation_type | enum | Requerido | blocks, relates_to o duplicates. Se pueden agregar tipos nuevos: ignora los que no reconozcas. Obligatorio, o su alias obsoleto kind. Uno de blocks, relates_to, duplicates. |
| target_task | string | Requerido | La otra tarea: su uuid o una clave como ENG-142. Una tarea que no puedes ver es 404. Obligatorio, o su alias obsoleto target. |
| kind | enum | Opcional | Alias obsoleto de relation_type, que se conserva para clientes antiguos. Envía relation_type en su lugar; ambos con valores distintos es 400. Uno de blocks, relates_to, duplicates. |
| target | string | Opcional | Alias obsoleto de target_task, que se conserva para clientes antiguos. Envía target_task en su lugar; ambos con valores distintos es 400. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | TaskRelation | Requerido | Un objeto TaskRelation. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | Falta el tipo o el destino, un alias no coincide con su campo o hay un valor inválido. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
| 409 | El vínculo ya existe (`relation_exists`) o crearía un ciclo (`relation_cycle`). |
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/ENG-142/relations/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"relation_type": "blocks",
"target_task": "ENG-150"
}'dailybot plan task link ENG-142 ENG-150 --type blocksProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Desvincular dos tareas
Emite task.unrelated en el flujo de eventos de la tarea (no relation_removed). El enriquecimiento de actividad lo traduce a changes[{field: related, from: …, to: null}].
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
| relation_id | string | Requerido | El uuid de la relación. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/tasks/ENG-142/relations/00000000-0000-4000-8000-00000000000a/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan task unlink ENG-142 00000000-0000-4000-8000-00000000000a --yesProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Agregar, quitar o reemplazar las etiquetas de una tarea
Las etiquetas son la taxonomía de toda la organización, compartida con formularios y check-ins; no hay un vocabulario de etiquetas exclusivo de tareas. Como máximo 50 etiquetas por tarea.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| mode | enum | Requerido | add, remove o replace. Uno de add, remove, replace. |
| label_uuids | array | Requerido | uuids de las etiquetas que se asignan a la tarea. Elementos: uuid. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| labels | array<Label> | Requerido | Etiquetas de la organización en la tarea. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló, o no se reconoció un valor de filtro, orden o `include`. El `code` de la respuesta indica cuál. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
| 429 | Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/ENG-142/labels/batch/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"mode": "add",
"label_uuids": [
"00000000-0000-4000-8000-00000000000b"
]
}'dailybot plan task labels ENG-142 --mode add --label 00000000-0000-4000-8000-00000000000b{
"labels": [
{
"uuid": "00000000-0000-4000-8000-00000000000b",
"name": "backend",
"color": "#2563eb"
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Suscribirse a las notificaciones de la tarea (rol de observador)
La única forma de definir el campo subscribed de la tarea (enviar subscribed en un PATCH de tarea es 400). Devuelve {"subscribed": true}, así que no hace falta volver a leer.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| subscribed | boolean | Requerido | Si observas esta tarea. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/ENG-142/subscription/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan task watch ENG-142{
"subscribed": true
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Quitar una suscripción de observador
Elimina la suscripción de observador de quien llama. Devuelve 204 (cuerpo vacío). Vuelve a hacer GET de la tarea para ver subscribed: false, o actualiza el estado del cliente localmente.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/tasks/ENG-142/subscription/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan task unwatch ENG-142Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Restaurar una tarea archivada
El reflejo de archivar: mismo scope, mismas credenciales, misma idempotencia. La tarea vuelve al final de su columna, porque sus vecinos anteriores ya no están. Restaurar una tarea activa es un 200 sin efecto.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Task | Requerido | Un objeto Task. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
| 409 | El tablero o el estado de la tarea se archivó mientras tanto (`state_in_use`). La respuesta indica el estado para que puedas elegir un destino. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/ENG-142/restore/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan task restore ENG-142Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Quién está en esta tarjeta
Participantes y observadores, los más antiguos primero: el orden en que se muestra la franja de personas de la tarjeta. Visible para cualquiera que pueda ver la tarea. Participar no otorga acceso: esta lista nunca amplía lo que sus miembros pueden ver.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Parámetros de consulta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| page | integer | Opcional | Número de página, empezando en 1. |
| page_size | integer | Opcional | Filas por página. 50 por defecto, máximo 100. Los valores fuera de rango se ajustan, nunca se rechazan: pedir 500 devuelve 100. |
Objeto TaskParticipant
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| member | ActorRef | Requerido | La persona. Ver ActorRef. |
| role | enum | Requerido | Rol del participante. Uno de participant, watcher. |
| source | enum | Requerido | Cómo llegó la persona a la tarjeta. Uno de manual, creator, owner, commented, mentioned, sync. |
| is_muted | boolean | Requerido | Permanecer en la tarjeta sin notificaciones. |
| added_by | ActorRef | null | Opcional | Quién agregó a la persona. Ver ActorRef. |
| created_at | date-time | Requerido | Cuándo se creó la fila. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| count | integer | Requerido | Número total de filas. |
| next | uri | Requerido | URL de la página siguiente, o null. |
| previous | uri | Requerido | URL de la página anterior, o null. |
| results | array<TaskParticipant> | Requerido | Las filas de esta página. Ver TaskParticipant. |
Errores
| Estado | Cuándo |
|---|---|
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS "https://api.dailybot.com/v1/plan/tasks/ENG-142/participants/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan task participants list ENG-142{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"member": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"role": "participant",
"source": "manual",
"is_muted": false,
"added_by": {
"kind": "user",
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"created_at": "2026-09-25T10:14:02Z"
}
]
}Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:read`.
- Límite de solicitudes: 120 lecturas por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Poner a alguien en esta tarjeta
Agrega un participante u observador. Agregar a alguien que ya está en la tarjeta devuelve 200 con la fila existente. Agregar o quitar un participante emite task.participant_added con actor_is_self, para distinguir "alguien me agregó" de "me uní". Un cambio de observador no emite nada: seguir una tarea es una preferencia privada. Silenciar (is_muted) mantiene a la persona en la tarjeta.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| Idempotency-Key | string | Opcional | Una clave que generas para esta intención. Una repetición con la misma clave y el mismo cuerpo devuelve la primera respuesta sin un segundo efecto secundario y lleva Idempotency-Replayed: true. Las claves se conservan durante 24 horas. La misma clave con un cuerpo distinto es 409 idempotency_key_payload_mismatch; una repetición mientras la primera llamada sigue en curso recibe 409 idempotency_in_progress durante hasta 120 segundos. |
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| user_uuid | uuid | Requerido | El uuid de usuario de la persona. |
| role | enum | Opcional | Rol del participante. Uno de participant, watcher. Valor por defecto participant. |
| is_muted | boolean | Opcional | Permanecer en la tarjeta sin notificaciones. Valor por defecto false. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | TaskParticipant | Requerido | Un objeto TaskParticipant. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/ENG-142/participants/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"user_uuid": "00000000-0000-4000-8000-00000000000c",
"role": "participant"
}'dailybot plan task participants add ENG-142 --user 00000000-0000-4000-8000-00000000000c --role participant
dailybot plan task mute ENG-142
dailybot plan task unmute ENG-142Probarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Quitar a alguien de esta tarjeta
Quita a la persona de la tarjeta y emite task.participant_removed. Salir no es silenciar: para dejar de recibir notificaciones sin salir de la tarjeta, define is_muted mediante el endpoint de agregar.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
| user_uuid | string | Requerido | El uuid de usuario del participante. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | El nombre del agente no es válido (`invalid_agent_attribution`). |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | Autenticado pero sin permiso: falta el scope (`insufficient_scope`, que es también lo que recibe una key de agente o de la organización en una operación que requiere una persona, y lo que recibe una key personal cuando sus scopes de Plan explícitos no cubren el endpoint) o es una cuenta de invitado (`guest_not_allowed`). |
| 404 | No existe o no es visible para ti. Ambos casos devuelven el mismo cuerpo. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/tasks/ENG-142/participants/00000000-0000-4000-8000-00000000000c/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan task participants remove ENG-142 00000000-0000-4000-8000-00000000000c --yesProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Requiere una persona: llámalo con una sesión iniciada, un token de usuario del CLI o una API key personal. Una key de agente o de la organización recibe `403 insufficient_scope`.
Renombrar un adjunto de la tarea
Cambia el nombre visible del archivo; los bytes guardados no cambian. Cualquiera que pueda escribir en el elemento padre puede renombrar sus adjuntos.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| task_id | string | Requerido | Un uuid de tarea o su clave, como ENG-142, incluida una clave retirada por el cambio de nombre de un tablero. La resolución se limita primero a tu organización, así que la clave de otra organización es un 404 idéntico al de una inexistente. Los ids numéricos nunca se aceptan. |
| attachment_id | uuid | Requerido | El uuid del adjunto. |
Encabezados
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| X-Dailybot-Agent-Name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona. Úsalo en escrituras multipart y sin cuerpo (DELETE, archivar, restaurar); en escrituras JSON envía el campo agent_name del cuerpo, que gana si vienen los dos. Codifica el valor con percent-encoding (UTF-8). Los caracteres de control se eliminan; un valor vacío significa sin agente. Más de 128 caracteres, o un valor que no se puede decodificar, es 400 invalid_agent_attribution (nunca se trunca). Una clave de tipo agente, que no está ligada a una persona, recibe 400 invalid_agent_attribution si lo envía. El sello nunca cambia una respuesta de permisos. Ver Atribución de agente. |
Cuerpo de la solicitud
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| filename | string | Requerido | El nuevo nombre del archivo (1–255 caracteres). Los bytes guardados no cambian. |
| agent_name | string | Opcional | El nombre del agente que ejecutó esta escritura en nombre de la persona (máx. 128 caracteres, vacío significa sin agente). Tiene prioridad sobre el header X-Dailybot-Agent-Name. Ver Atribución de agente. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | TaskAttachment | Requerido | Un objeto TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | La validación falló; el `code` de la respuesta indica qué campo. `invalid_agent_attribution` significa que el nombre del agente no es válido. |
| 401 | Credencial ausente, vencida o con formato inválido (`credential_absent`, `credential_expired`, `credential_malformed`). |
| 402 | Plan aún no está habilitado para tu organización (`plan_upgrade_required`). Es lo esperado durante la Beta: escribe a [email protected]. |
| 403 | No puedes escribir aquí (`insufficient_scope`), o eres invitado (`guest_not_allowed`). |
| 404 | El elemento padre o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/tasks/ENG-142/attachments/00000000-0000-4000-8000-000000000009/" \
-H "X-API-KEY: $DAILYBOT_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"filename": "spec-v2.pdf"
}'dailybot plan task attachments rename ENG-142 00000000-0000-4000-8000-000000000009 spec-v2.pdfProbarlo
Este es un asistente de solo copia — la solicitud no se envía desde tu navegador. Pega el comando en tu terminal para ejecutarlo.
- Scope: `tasks:write`.
- Límite de solicitudes: 60 escrituras por minuto por actor.
- Funciona con una sesión iniciada, un token de usuario del CLI, una API key personal, o una key de agente o de la organización. Una key personal ve lo que ve su persona; una key de agente o de la organización actúa como actor del sistema y solo ve los tableros visibles para la organización.
Esta página es la referencia de Plan · Tareas. Todos los endpoints viven bajo https://api.dailybot.com/v1/plan/ y responden JSON.
Autentícate con una sesión iniciada o un token de usuario del CLI (Authorization: Bearer …), o con una API key (X-API-KEY). Una API key personal actúa como su persona y puede hacer todo lo que esa persona puede hacer en Dailybot; una key de agente o de la organización nunca actúa como una persona y se rechaza en los endpoints que la requieren. En un endpoint, la insignia API key significa que también se acepta una key de agente o de la organización. Consulta Autenticación para Plan, Autenticación y Errores para las reglas comunes a todas las APIs de Dailybot.
Si es tu primera vez con Plan, lee la introducción para entender el modelo: proyectos, tableros, estados, claves, orden, versiones y archivado.