Crie tarefas a partir de uma lista em uma chamada
Importe até 100 tarefas do Dailybot por requisição com o endpoint em lote: Idempotency-Key, uma simulação antes, resultados por item e chaves de tarefa contíguas.
Beta
Plan está em beta. Tudo o que está em /plan no aplicativo web, os comandos da CLI e da agent skill para projetos, metas, quadros e tarefas, e a API pública /v1/plan/ podem mudar antes da disponibilidade geral. Quer testar com sua equipe? Escreva para [email protected].
A importação de uma lista (uma planilha, um checklist, o resultado de uma sessão de planejamento) não deveria exigir uma requisição por linha, e uma nova tentativa não deveria criar tudo duas vezes. POST /v1/plan/tasks/bulk/ cria até 100 tarefas por chamada, exige um Idempotency-Key e informa o resultado de cada item separadamente.
1. Visualize antes com uma simulação
?dry_run=true executa a chamada inteira e desfaz tudo no final, então você vê o que aconteceria sem gravar nada (não precisa de chave de idempotência):
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/bulk/?dry_run=true" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-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", "priority": 2 }
]
}'
A simulação responde com consequence (uma frase para mostrar a uma pessoa), items com as mudanças que cada item faria e refused com os itens que falhariam e o motivo.
2. Crie de verdade
Envie o mesmo corpo sem dry_run, com um Idempotency-Key:
curl -sS -X POST "https://api.dailybot.com/v1/plan/tasks/bulk/" \
-H "Authorization: Bearer $DAILYBOT_TOKEN" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: import-2026-09-25-batch-1" \
-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", "priority": 2 }
]
}'
{
"succeeded": 2,
"failed": 0,
"results": [
{ "task": "00000000-0000-4000-8000-000000000105", "key": "ENG-150", "external_id": "row-1", "status": "ok", "version": 1 },
{ "task": "00000000-0000-4000-8000-000000000106", "key": "ENG-151", "external_id": "row-2", "status": "ok", "version": 1 }
]
}
- Os itens recebem um
title(até 512 caracteres) e, opcionalmente,description,state,owner,priority,estimate,start_date,due_dateeexternal_id. - O
external_idvolta em cada resultado, para que você associe os resultados às suas linhas e concilie os dados depois de uma nova tentativa. - As chaves são alocadas em um bloco contíguo, na ordem em que você enviou os itens, então a importação fica em ordem depois (
ENG-150,ENG-151, …). - Por padrão, as novas tarefas ficam no fim de cada coluna. Adicione
"position": "start"ao lado deoperationpara colocá-las no topo, na ordem dos seus itens.
Pela CLI:
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
3. Leia os resultados por item
A chamada responde 200 mesmo quando alguns itens falham: o status HTTP indica que o lote foi aceito, não que todos os itens deram certo. Verifique failed e o status de cada resultado; um item com falha traz code, detail e, às vezes, extra:
{ "task": "ENG-9", "status": "error", "code": "version_conflict", "detail": "This task changed since you loaded it.", "extra": { "current_version": 4 } }
4. Tente de novo com segurança
Se a conexão cair, envie o mesmo corpo com o mesmo Idempotency-Key. Você recebe a primeira resposta de volta (com Idempotency-Replayed: true) e nada é criado duas vezes. As chaves ficam registradas por 24 horas. Um corpo diferente com a mesma chave retorna 409 idempotency_key_payload_mismatch; use uma chave nova para um lote novo.
Mais de 100 linhas
Divida a lista em lotes de até 100 itens, com uma chave por lote (por exemplo, import-2026-09-25-batch-1, -batch-2, …). Mais de 100 itens em uma chamada retorna 400 too_many_items. As chamadas em lote contam para um limite de 30 por minuto por ator.
Outras operações em lote
O mesmo endpoint aplica uma operação a até 100 tarefas existentes, identificadas por uuid ou chave: move, update, archive, restore e set_labels (que substitui o conjunto inteiro de etiquetas). set_owner, set_priority, set_due_date e set_parent são aliases de update, e delete é alias de archive. Um payload que cita uma tarefa de outra organização é recusado por inteiro, antes que qualquer coisa seja gravada.