Plan · Objetivos
Los objetivos dicen para qué es el trabajo. Apuntan a proyectos; un objetivo no contiene nada directamente. 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 objetivos
Los objetivos que puedes ver, en una página. Filtra por status, owned_by, una fecha dentro del periodo del objetivo con active_on o con search. include=progress,projects agrega el cálculo de progreso y los proyectos vinculados.
Parámetros de consulta
Orden y expansión
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| include | string | Opcional | Resúmenes agregados para incrustar, separados por comas: progress, projects. Se omiten por defecto porque cada uno es un agregado. Un token desconocido es 400 invalid_filter_value; un valor vacío no tiene efecto. |
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. |
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. |
| status | string | Opcional | Repetible. Filtra por el estado del objetivo declarado. |
| owned_by | string | Opcional | El uuid de la persona responsable. Se llama owned_by en lugar de owner porque el owner de la gramática de tareas acepta me y unowned, y un mismo nombre de parámetro con dos espacios de valores distintos es la forma en que un cliente envía el equivocado. |
| active_on | string | Opcional | Objetivos cuyo periodo cubre esta fecha: la pregunta propia del roadmap. |
Filas archivadas
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| 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. |
Objeto Goal
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| uuid | uuid | Requerido | Identificador público estable. |
| name | string | Requerido | Nombre visible. Máx. 120 caracteres. |
| description | string | null | Opcional | Descripción libre. |
| status | enum | Requerido | Estado actual. Uno de not_started, on_track, at_risk, off_track, achieved, missed. |
| period_start | date | Requerido | Primer día del periodo del objetivo. |
| period_end | date | Requerido | Último día del periodo del objetivo. |
| owner | UserRef | null | Opcional | La persona responsable de la tarea. Ver UserRef. |
| team | TeamRef | null | Opcional | El equipo. Ver TeamRef. |
| progress | GoalProgress | null | Opcional | Resumen agregado del progreso sobre las tareas que puedes ver. Ver GoalProgress. |
| project_count | integer | Opcional | Número de proyectos vinculados. |
| projects | array | Opcional | Proyectos vinculados. Elementos: {uuid, name, slug, health, lead}. |
| 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. |
| completed_at | date-time | null | Opcional | Cuándo se completó, o null. |
| archived_at | date-time | null | Opcional | Cuándo se archivó la fila. |
| created_at | date-time | Opcional | Cuándo se creó la fila. |
| updated_at | date-time | Opcional | Cuándo cambió la fila por última vez. |
| viewer | object | Requerido | Lo que puedes hacer con esta fila. Forma: {can_manage: boolean}. |
Objeto UserRef
Objeto TeamRef
Objeto GoalProgress
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| total | integer | Requerido | Todas las tareas contadas. |
| completed | integer | Requerido | Tareas en un estado done o canceled. |
| open | integer | Opcional | Tareas en un estado backlog, todo o in_progress. |
| blocked | integer | Opcional | Tareas con un bloqueo activo. |
| overdue | integer | Opcional | Tareas abiertas con la fecha de vencimiento ya pasada. |
| percent_complete | integer | Requerido | completed como porcentaje de total. |
| is_partial | boolean | Requerido | true cuando parte del trabajo del objetivo está oculto para ti, así que las cifras cubren solo lo que puedes ver. |
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<Goal> | Requerido | Las filas de esta página. Ver Goal. |
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]. |
| 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`). |
| 429 | Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`. |
curl -sS "https://api.dailybot.com/v1/plan/goals/?include=progress,projects" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan goal list --include progress --include projects{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000006",
"name": "Q4 Roadmap",
"description": null,
"status": "on_track",
"period_start": "2026-09-28",
"period_end": "2026-10-15",
"owner": {
"uuid": "00000000-0000-4000-8000-00000000000c",
"name": "Ada L."
},
"team": null,
"progress": {
"total": 10,
"completed": 4,
"percent_complete": 40,
"is_partial": false
},
"project_count": 1,
"projects": [],
"is_archived": false,
"completed_at": null,
"archived_at": null,
"created_at": "2026-09-25T10:14:02Z",
"updated_at": "2026-09-25T10:14:02Z",
"viewer": {}
}
]
}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 un objetivo
Crea un objetivo con un periodo y un status declarado. Un objetivo activo con el mismo nombre es 409 goal_name_conflict. Todo miembro no invitado puede llamarlo (con una sesión iniciada o una API key personal); una key de agente o de la organización no puede.
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 |
|---|---|---|---|
| name | string | Requerido | Nombre visible. Máx. 120 caracteres. |
| description | string | Opcional | Descripción libre. Máx. 2000 caracteres. |
| period_start | date | Requerido | Primer día del periodo del objetivo. |
| period_end | date | Requerido | Último día del periodo del objetivo. |
| owner | uuid | null | Opcional | El uuid de usuario del responsable. La persona ya debe poder ver el tablero (de lo contrario, 400 participant_cannot_access_board). |
| team | uuid | null | Opcional | El equipo. |
| status | enum | Opcional | Estado actual. Uno de not_started, on_track, at_risk, off_track, achieved, missed. |
| 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) | Goal | Requerido | Un objeto Goal. |
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]. |
| 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`). |
| 409 | Un objetivo activo ya tiene este nombre (`goal_name_conflict`). |
| 429 | Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/goals/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Idempotency-Key: $(uuidgen)" \
-H "Content-Type: application/json" \
-d '{
"name": "Q4 Roadmap",
"period_start": "2026-10-01",
"period_end": "2026-12-31",
"status": "on_track"
}'dailybot plan goal create -n "Q4 Roadmap" --period-start 2026-10-01 --period-end 2026-12-31Probarlo
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:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- 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`.
Un objetivo, con su progreso derivado
Siempre devuelve progress, projects y project_count; el parámetro include no hace falta aquí.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| goal_id | string | Requerido | El uuid del objetivo. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | Goal | Requerido | Un objeto Goal. |
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]. |
| 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. |
| 429 | Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`. |
curl -sS "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan goal get 00000000-0000-4000-8000-000000000006Probarlo
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 un objetivo o declarar su estado
Cambia los campos de un objetivo o declara su status (on_track, at_risk, …). Envía solo los campos que cambias. Todo miembro no invitado puede llamarlo (con una sesión iniciada o una API key personal); una key de agente o de la organización no puede.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| goal_id | string | Requerido | El uuid del objetivo. |
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 |
|---|---|---|---|
| name | string | Opcional | Nombre visible. Máx. 120 caracteres. |
| description | string | Opcional | Descripción libre. Máx. 2000 caracteres. |
| period_start | date | Opcional | Primer día del periodo del objetivo. |
| period_end | date | Opcional | Último día del periodo del objetivo. |
| owner | uuid | null | Opcional | El uuid de usuario del responsable. La persona ya debe poder ver el tablero (de lo contrario, 400 participant_cannot_access_board). |
| team | uuid | null | Opcional | El equipo. |
| status | enum | Opcional | Estado actual. Uno de not_started, on_track, at_risk, off_track, achieved, missed. |
| 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) | Goal | Requerido | Un objeto Goal. |
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]. |
| 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. |
| 409 | Ya existe un objetivo activo con este nombre (`goal_name_conflict`). |
| 429 | Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`. |
curl -sS -X PATCH "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"status": "at_risk"
}'dailybot plan goal update 00000000-0000-4000-8000-000000000006 --status at_riskProbarlo
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:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- 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`.
Archivar un objetivo. Los proyectos se conservan, sin objetivo
Archiva el objetivo. Nada vive dentro de un objetivo, así que sus proyectos se quedan donde están, sin apuntar a él. Envía ?dry_run=true antes para ver la consecuencia sin archivar.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| goal_id | string | Requerido | El uuid del objetivo. |
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) | Goal | DryRunPreview | Requerido | Un objeto Goal. 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]. |
| 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. |
| 429 | Llegaste al límite de solicitudes. Espera los segundos que indica `Retry-After`. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/archive/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan goal archive 00000000-0000-4000-8000-000000000006 --dry-runProbarlo
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:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- 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`.
Recuperar un objetivo archivado
Lo inverso de archive/, igual que boards/{board_id}/restore/. Restaurar un objetivo que ya está activo es un 200 sin efecto, no un error. Los nombres de los objetivos son únicos entre los objetivos ACTIVOS, así que si el nombre se ocupó mientras este estaba archivado, la restauración responde 409 goal_name_conflict: el único caso que distingue una restauración real de un simple cambio de indicador.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| goal_id | string | Requerido | El uuid del objetivo. |
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 |
|---|---|---|---|
| (body) | Goal | Requerido | Un objeto Goal. |
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. |
| 409 | Ya existe un objetivo activo con este nombre (`goal_name_conflict`). |
curl -sS -X POST "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/restore/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan goal restore 00000000-0000-4000-8000-000000000006Probarlo
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:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- 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`.
Vincular un proyecto a un objetivo (desde la página del objetivo)
Vincula un proyecto con el objetivo, desde el lado del objetivo. Un proyecto puede servir a varios objetivos. La respuesta es el objetivo con sus projects.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| goal_id | string | Requerido | El uuid del objetivo. |
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 |
|---|---|---|---|
| project | uuid | Requerido | El proyecto. |
| 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) | Goal | Requerido | Un objeto Goal. |
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. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/projects/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"project": "00000000-0000-4000-8000-000000000001"
}'dailybot plan goal link 00000000-0000-4000-8000-000000000006 00000000-0000-4000-8000-000000000001Probarlo
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:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- 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`.
Desvincular un proyecto de un objetivo
Desvincula un proyecto del objetivo. El proyecto no cambia.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| goal_id | string | Requerido | El uuid del objetivo. |
| project_id | string | Requerido | El uuid del proyecto. |
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/goals/00000000-0000-4000-8000-000000000006/projects/00000000-0000-4000-8000-000000000001/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan goal unlink 00000000-0000-4000-8000-000000000006 00000000-0000-4000-8000-000000000001 --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:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- 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`.
Listar los adjuntos de un objetivo
Los adjuntos del objetivo, ordenados por posición. Cualquiera que pueda ver el objetivo puede listar sus adjuntos; un objetivo que no puedes ver es 404. Cada url es un enlace de descarga. No lo guardes: conserva el uuid del adjunto y vuelve a leerlo cuando necesites el archivo. Para mostrar una imagen en la descripción del objetivo, refiérete a ella como attachment:{uuid} y resuélvela al renderizar con el url reciente de esta lista.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| goal_id | string | Requerido | El uuid del objetivo. |
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 TaskAttachment
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| uuid | uuid | Requerido | Identificador público estable. |
| filename | string | Requerido | Nombre del archivo. |
| content_type | string | Requerido | Tipo MIME. |
| size | integer | Requerido | Tamaño en bytes. |
| url | string | Requerido | Dónde descargar el archivo. |
| thumbnail_url | uri | null | Opcional | Miniatura para imágenes. |
| width | integer | null | Opcional | — |
| height | integer | null | Opcional | — |
| status | enum | Requerido | Estado actual. Uno de pending, ready, scanning, rejected. |
| uploaded_by | ActorRef | null | Opcional | Quién subió el archivo. Ver ActorRef. |
| executed_by_agent | object | null | Opcional | El agente que ejecutó esto en nombre de la persona, o null si no se nombró a ninguno: un objeto con uuid, name, username y avatar. La persona del campo de autor sigue siendo la autora; el agente se muestra como quien lo ejecutó. |
| created_at | date-time | Requerido | Cuándo se creó la fila. |
Objeto ActorRef
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<TaskAttachment> | Requerido | Las filas de esta página. Ver TaskAttachment. |
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 | El objetivo o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/attachments/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan goal attachments 00000000-0000-4000-8000-000000000006 --json{
"count": 1,
"next": null,
"previous": null,
"results": [
{
"uuid": "00000000-0000-4000-8000-000000000009",
"filename": "screenshot.png",
"content_type": "image/png",
"size": 1,
"url": "https://your.app/files/screenshot.png",
"thumbnail_url": null,
"width": null,
"height": null,
"status": "ready",
"uploaded_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.
- 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.
Subir un adjunto a un objetivo
Adjunta un archivo a un objetivo. Envía multipart/form-data con el campo file y un caption opcional; aquí no hay flujo de prefirmado. El límite es de 5 MiB en todos los entornos: un archivo más grande es 400 attachment_too_large, con extra.max_size_bytes. El tipo de archivo se verifica por su contenido contra la misma lista que los adjuntos de tareas (attachment_invalid_type). Un objetivo admite como máximo 50 adjuntos (attachment_limit_reached).
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| goal_id | string | Requerido | El uuid del objetivo. |
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 |
|---|---|---|---|
| file | binary | Requerido | El archivo a subir (máximo 5 MiB por esta vía). |
| caption | string | Opcional | Pie de texto opcional. Máximo 255 caracteres. |
Respuesta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| (body) | TaskAttachment | Requerido | Un objeto TaskAttachment. |
Errores
| Estado | Cuándo |
|---|---|
| 400 | Falta el archivo, es demasiado grande (`attachment_too_large`, más de 5 MiB), su tipo no se admite (`attachment_invalid_type`) o se alcanzó el límite de 50 (`attachment_limit_reached`). `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 actúas como miembro no invitado con una sesión iniciada o una API key personal (`insufficient_scope`); una key de agente o de la organización siempre recibe esto. |
| 404 | El objetivo o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X POST "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/attachments/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-F "file=@./screenshot.png" \
-F "caption=Staging dashboard"dailybot plan goal attach 00000000-0000-4000-8000-000000000006 ./okr-brief.pdf --caption "OKR brief"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:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- 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`.
Descargar los bytes de un adjunto de un objetivo
Transmite el archivo con el tipo de contenido registrado al subirlo, X-Content-Type-Options: nosniff y Cache-Control: no-store. Nunca redirige al almacenamiento. Cualquiera que pueda ver el objetivo puede descargarlo.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| goal_id | string | Requerido | El uuid del objetivo. |
| attachment_id | string | Requerido | El uuid del adjunto. |
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 | El objetivo o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/attachments/00000000-0000-4000-8000-000000000009/content/" \
-H "X-API-KEY: $DAILYBOT_API_KEY"dailybot plan goal attachment get 00000000-0000-4000-8000-000000000006 00000000-0000-4000-8000-000000000009 -o ./okr-brief.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: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.
Quitar un adjunto de un objetivo
Quita el adjunto del objetivo.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| goal_id | string | Requerido | El uuid del objetivo. |
| attachment_id | string | 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. |
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 | No actúas como miembro no invitado con una sesión iniciada o una API key personal (`insufficient_scope`); una key de agente o de la organización siempre recibe esto. |
| 404 | El objetivo o el adjunto no existe o no puedes verlo (`not_found`), nunca un 403. |
curl -sS -X DELETE "https://api.dailybot.com/v1/plan/goals/00000000-0000-4000-8000-000000000006/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN"dailybot plan goal attachment delete 00000000-0000-4000-8000-000000000006 00000000-0000-4000-8000-000000000009 --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:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- 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 del objetivo
Cambia el nombre visible del archivo; los bytes guardados no cambian. Las reglas son las del contenedor: solo administradores de la organización.
Parámetros de ruta
| Nombre | Tipo | Requerido | Descripción |
|---|---|---|---|
| goal_id | string | Requerido | El uuid del objetivo. |
| 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 eres administrador de la organización (`insufficient_scope`), o eres invitado (`guest_not_allowed`). Una key de agente o de la organización también se rechaza aquí. |
| 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/goals/00000000-0000-4000-8000-000000000006/attachments/00000000-0000-4000-8000-000000000009/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"filename": "spec-v2.pdf"
}'dailybot plan goal attachments rename 00000000-0000-4000-8000-000000000006 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:admin` — escrituras de contenedores. Un miembro no invitado puede llamarlo con una sesión iniciada o una API key personal (una key con scopes de Plan explícitos necesita `tasks:write`, que lo cubre); una key de agente o de la organización recibe `403 insufficient_scope`.
- 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`.
Esta página es la referencia de Plan · Objetivos. 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.