Documentação

Referência da API

Todo endpoint é restrito à conta autenticada, e a API REST autentica com o cookie de sessão que o app web define. Scripts e agentes usam o endpoint MCP.

Todas as requisições e respostas são JSON. Toda rota /api/* autentica com o cookie de sessão definido por POST /api/auth/login:

curl -X POST https://trydone.app/api/auth/login \
  -H "Content-Type: application/json" \
  -d '{"email":"you@example.com","password":"..."}' \
  -c cookies.txt

curl -X GET https://trydone.app/api/tasks -b cookies.txt

Um token MCP não autentica a API REST. Um cabeçalho Authorization: Bearer <mcp-token> é aceito em exatamente uma rota, GET /api/events, para que um agente possa acompanhar as mudanças com a credencial que já tem. Todas as outras rotas /api/* respondem a um token bearer com 401.

Isso é proposital, não um esquecimento: impede que um token MCP vazado controle toda a superfície REST da conta. Scripts e agentes devem falar com POST /mcp, que é para isso que o token serve.

curl -X GET https://trydone.app/api/events \
  -H "Authorization: Bearer <your-generated-mcp-token>"

Autenticação e conta

POST/api/auth/signup
Cria uma conta (e-mail + senha, mais um código de indicação `ref` opcional).
GET/api/referrals
Seu link de indicação, quem entrou por ele e o progresso até a próxima recompensa.
POST/api/auth/login
Inicia uma sessão e define um cookie. Com 2FA ativado, devolve um desafio; conclua em /api/auth/2fa/verify.
POST/api/auth/magic-link
Envia por e-mail um link de acesso de uso único para um endereço.
POST/api/auth/magic-link/verify
Troca o token de um link de acesso por uma sessão de verdade. Não exige senha.
POST/api/auth/2fa/verify
Etapa 2 de um login com 2FA: troca o desafio e um código por uma sessão de verdade. Não exige sessão.
POST/api/auth/logout
Encerra a sessão atual.
GET/api/auth/me
O usuário atual (incluindo se o e-mail foi confirmado) e se existe um token MCP.
GET/api/bootstrap
O usuário atual mais todas as listas (tarefas, projetos, metas, dependências, etiquetas, tarefa↔etiquetas) em uma única requisição. É a consulta periódica do cliente web.
PATCH/api/auth/profile
Atualiza o perfil: nome, fuso horário, avatar.
POST/api/auth/password/verify
Verifica a senha atual (etapa 1 da troca de senha).
POST/api/auth/password
Define uma nova senha. Exige um /password/verify recente nesta sessão (etapa 2).
POST/api/auth/forgot-password
Solicita um e-mail de redefinição de senha.
POST/api/auth/reset-password
Conclui uma redefinição com o token enviado por e-mail.
POST/api/auth/verify-email
Confirma um endereço com o token enviado por e-mail. Não exige sessão.
POST/api/auth/resend-verification
Reenvia o e-mail de confirmação para a conta conectada.
POST/api/auth/mcp-token
Gera (ou gera de novo) o token MCP de acesso total da conta.
DELETE/api/auth/mcp-token
Revoga o token MCP de acesso total.
GET/api/mcp-tokens
Lista os tokens MCP da conta (total, somente leitura, de um único projeto).
POST/api/mcp-tokens
Emite um token MCP com escopo (somente leitura ou um projeto).
DELETE/api/mcp-tokens/:id
Revoga um token MCP com escopo.
GET/api/auth/2fa
Se a autenticação em duas etapas está ativada e quantos códigos de recuperação restam.
POST/api/auth/2fa/setup
Inicia o cadastro de TOTP: devolve o segredo e o URI otpauth:// codificado no QR. Não ativa o 2FA.
POST/api/auth/2fa/enable
Confirma o cadastro com um código válido. Devolve os códigos de recuperação, na única vez em que eles existem em texto puro.
DELETE/api/auth/2fa
Desativa a autenticação em duas etapas.
POST/api/auth/2fa/recovery-codes
Emite um novo conjunto de códigos de recuperação e invalida os antigos.
GET/api/auth/connections
Lista os clientes OAuth aos quais você concedeu acesso.
DELETE/api/auth/connections/:clientId
Revoga o acesso de um cliente OAuth.
DELETE/api/auth/account
Exclui a conta e tudo o que há nela. Exige a senha atual.

Tarefas

GET/api/tasks
Lista tarefas. Filtra por status, prioridade, projeto e tarefa principal; busca em título e notas.
POST/api/tasks
Cria uma tarefa.
POST/api/tasks/quick
Cria uma tarefa a partir de um texto bruto de captura rápida.
POST/api/tasks/import
Importa uma exportação em CSV do Todoist, TickTick, Asana, Trello ou Notion (ou um CSV genérico).
GET/api/tasks/:id
Obtém uma tarefa.
PATCH/api/tasks/:id
Atualiza uma tarefa.
DELETE/api/tasks/:id
Exclui uma tarefa (em cascata, com as subtarefas). Move para a Lixeira, não é uma exclusão definitiva.
POST/api/tasks/bulk-assign
Atribui um conjunto de IDs de tarefas (até 200) a um usuário ou a um agente de IA.
POST/api/tasks/bulk-delete
Move um conjunto de IDs de tarefas para a Lixeira em uma única chamada.
POST/api/tasks/bulk-move
Move um conjunto de IDs de tarefas para um projeto (ou para fora de um) em uma única chamada.
POST/api/tasks/:id/decompose
Divide uma tarefa em subtarefas a partir de uma lista de títulos.
POST/api/tasks/:id/approve
Aprova uma conclusão proposta por um agente (pending_approval → done).
POST/api/tasks/:id/reject
Rejeita uma tarefa em pending_approval, com comentário opcional (→ in_progress).
POST/api/tasks/:id/approve-plan
Aprova um plano proposto (plan_proposed → in_progress).
POST/api/tasks/:id/reject-plan
Rejeita um plano proposto, com comentário opcional.
GET/api/tasks/:id/evidence
Aquilo em que uma aprovação está sendo convidada a confiar: progresso dos critérios, gasto em relação ao limite, comprovantes, entregas e links de rastro.
GET/api/tasks/:id/runs
As execuções de agentes registradas em uma tarefa.
GET/api/tasks/:id/decisions
As perguntas que um agente deixou nesta tarefa.
POST/api/tasks/:id/pause
Interrompe todo agente que mexe nesta tarefa até ela ser retomada.
POST/api/tasks/:id/resume
Retoma uma tarefa pausada. Só para pessoas: não há equivalente no MCP.
POST/api/resurface
Tira da espera as tarefas cuja data de retorno chegou.

Lixeira

GET/api/trash
Lista as tarefas excluídas, da mais recente para a mais antiga.
POST/api/tasks/:id/restore
Restaura uma tarefa excluída (e as subtarefas que foram excluídas com ela).
DELETE/api/trash/:id
Exclui para sempre uma tarefa da lixeira.
DELETE/api/trash
Esvazia a lixeira.

Etiquetas

GET/api/tags
Lista as etiquetas.
POST/api/tags
Cria uma etiqueta.
DELETE/api/tags/:id
Exclui uma etiqueta (ela sai de todas as tarefas que a tinham).
GET/api/task-tags
Lista todos os pares tarefa↔etiqueta da conta.
POST/api/tasks/:id/tags
Aplica uma etiqueta a uma tarefa.
DELETE/api/tasks/:id/tags/:tagId
Remove uma etiqueta de uma tarefa.

Dependências

GET/api/dependencies
Lista todas as relações de bloqueio da conta.
GET/api/tasks/:id/dependencies
Lista os bloqueios de uma tarefa.
POST/api/tasks/:id/dependencies
Adiciona um bloqueio (com verificação de ciclos).
DELETE/api/tasks/:id/dependencies/:blockerId
Remove um bloqueio.

Atividade

GET/api/tasks/:id/comments
Lista o feed de atividade de uma tarefa (comentários + histórico de status).
POST/api/tasks/:id/comments
Adiciona um comentário, de sua autoria ou de um agente de IA.
GET/api/activity
A faixa de atividade do quadro inteiro: o que aconteceu em todas as tarefas que você pode ver, do mais recente para o mais antigo. ?limit= define o máximo.
GET/api/claude-shipped
O feed do trabalho dos agentes: o que o Claude de fato entregou. ?days=1|7|30 define o período.

Resumo e revisão

GET/api/digest
Tarefas atrasadas, que vencem hoje, paradas e concluídas recentemente.
GET/api/review
O consolidado da revisão semanal.
GET/api/stats
Tendência de conclusão, sequência e tarefas abertas por prioridade e por projeto.

Metas

GET/api/goals
Lista as metas.
POST/api/goals
Cria uma meta.
PATCH/api/goals/:id
Atualiza uma meta.
DELETE/api/goals/:id
Exclui uma meta.
POST/api/goals/:id/breakdown
Cria na meta uma tarefa de divisão em etapas atribuída ao Claude. É a ação “Propor etapas”.

Caixa de capturas

GET/api/capture
Tarefas propostas por agentes aguardando triagem, mais os números de aceitas e dispensadas. ?state=pending|accepted|dismissed|all.
POST/api/capture/sweep
Varre o calendário em busca de coisas que valem uma sugestão e as registra como sugestões.
POST/api/capture/:id/accept
Transforma uma sugestão em uma tarefa de verdade. A tarefa sempre começa com aprovação exigida (agent_ok: false).
POST/api/capture/:id/dismiss
Dispensa uma sugestão sem criar nada.

Faxina

GET/api/grooming
A varredura de itens parados: trabalho aberto que ficou em silêncio, com as evidências para decidir o que fazer. ?days= define o limiar, ?limit= define o máximo.
GET/api/grooming/proposals
Propostas de faxina agrupadas. ?state=open|resolved|all.
POST/api/grooming/items/:id/approve
Aplica o destino proposto para um item.
POST/api/grooming/items/:id/dismiss
Recusa um item e deixa a tarefa como está.

Autonomia e agentes

GET/api/autonomy
O registro de autonomia: onde agent_ok foi conquistado, por categoria de projeto e de etiqueta. É só leitura; não concede nada.
POST/api/autonomy/revoke
Retira a concessão de uma categoria e põe as tarefas dela de novo atrás da etapa de aprovação.
GET/api/agents
A lista de agentes: o que cada agente com nome fez. ?days= define o período. Só contagens e datas.
GET/api/fleet
Estado da frota ao vivo: quem está trabalhando em quê agora.
GET/api/projects/:id/rejections
Rejeições recentes em um projeto. É o registro em que se baseia a perda de autonomia.
GET/api/decisions
Todas as decisões abertas que algum agente está esperando, no quadro inteiro.
POST/api/decisions/:id/answer
Responde a uma decisão pendente e desbloqueia a tarefa.

Gatilhos

GET/api/triggers
Todos os pedidos abertos para um agente começar agora (por um clique em Executar agora ou uma menção a @claude) que ainda esperam uma conexão.
DELETE/api/triggers/:id
Retira um gatilho enquanto ninguém o assumiu.
GET/api/trigger-webhook
Se há um webhook de saída definido para trigger.created, os resultados das entregas recentes e needs_rotation: true para um webhook registrado antes de as entregas passarem a ser assinadas com o próprio segredo, e que deve ser substituído para receber um segredo novo.
PUT/api/trigger-webhook
Define ou substitui a URL do webhook. Devolve o segredo de assinatura uma única vez, na criação. Cada entrega leva X-Done-Signature: o HMAC-SHA256 em hexadecimal, com esse segredo como chave, do valor de X-Done-Timestamp, um ponto e o corpo bruto.
DELETE/api/trigger-webhook
Remove o webhook.

Rotina e limites

GET/api/routine
Os limites em que uma rotina agendada para.
PATCH/api/routine
Atualiza esses limites.
GET/api/routine/night
O gasto em relação ao limite desta noite. ?since= substitui a janela padrão de 12 horas.

Projetos

GET/api/projects
Lista os projetos.
POST/api/projects
Cria um projeto.
PATCH/api/projects/:id
Atualiza um projeto.
DELETE/api/projects/:id
Exclui um projeto.

Espaços de trabalho e compartilhamento

GET/api/workspaces
Lista os espaços de trabalho de que você participa.
POST/api/workspaces/:id/pause
Para um quadro: nenhum agente recebe trabalho dele até ser retomado.
POST/api/workspaces/:id/resume
Retoma um quadro parado. Só para pessoas: não há equivalente no MCP.
GET/api/workspaces/:id/members
Lista os membros de um espaço de trabalho.
DELETE/api/workspaces/:id/members/:memberId
Remove um membro de um espaço de trabalho.
POST/api/invites
Convida alguém para um espaço de trabalho ou para um único projeto e envia o link por e-mail. Exige o endereço da pessoa.
POST/api/invites/accept
Resgata o token de um convite para entrar.

Execuções dos agentes

GET/api/runs
Execuções recentes de agentes, mais estatísticas agregadas de status, chamadas de ferramentas e tokens.

Calendário e sincronização com o Google

GET/api/calendar
Configurações de calendário e agendamento e o token do feed ICS.
PUT/api/calendar
Atualiza as configurações de calendário e do horário de trabalho.
POST/api/calendar/token
Gera o token do feed ICS para assinatura.
DELETE/api/calendar/token
Revoga o token do feed ICS.
POST/api/calendar/oauth/start
Inicia a conexão de um Google Calendar: devolve a URL de consentimento para onde enviar o navegador.
GET/api/calendar/writeback
Se Planejar meu dia grava blocos de foco em um calendário que pertence ao Done, e em qual.
POST/api/calendar/writeback/sync
Reconcilia o calendário de gravação agora, em vez de esperar a varredura noturna.
DELETE/api/calendar/writeback
Desativa a gravação e para de mexer naquele calendário.
GET/api/google/accounts
Lista as contas do Google Calendar conectadas.
POST/api/google/sync
Sincroniza os horários ocupados do Google Calendar.
DELETE/api/google/accounts/:id
Desconecta uma conta do Google.
GET/api/calendar/events
Lista os eventos de calendário em cache (títulos, pessoas) em um intervalo de datas.
GET/api/calendar/matches
Correspondências sugeridas entre tarefa↔evento, por tarefa, por evento ou por intervalo de datas.
GET/api/tasks/:id/calendar-links
Lista os eventos de calendário vinculados a uma tarefa.
POST/api/tasks/:id/calendar-links
Vincula uma tarefa ao evento de calendário de que ela trata.
DELETE/api/tasks/:id/calendar-links/:eventId
Desvincula uma tarefa de um evento de calendário.

Notificações e tempo real

GET/api/notifications
Obtém as preferências de notificação (resumo por e-mail).
PUT/api/notifications
Atualiza as preferências de notificação.
GET/api/events
Fluxo enviado pelo servidor com as mudanças de tarefas e de atividade. Reconecte com o id do último quadro (Last-Event-ID ou ?cursor=) para receber de novo as mudanças de tarefas e a atividade que você perdeu.
GET/api/export
Exporta as tarefas em CSV ou Markdown.
PUT/api/view-prefs
Grava as preferências de visualização (ordem, agrupamento, quais painéis estão abertos).
PUT/api/saved-views
Substitui as visualizações salvas da conta.
GET/api/widget
Um retrato compacto do quadro para o widget da tela inicial. ?limit=, ?days= e um cabeçalho X-Client-Date com o “hoje” do próprio dispositivo.

MCP

POST/mcp
O endpoint MCP remoto: JSON-RPC sobre Streamable HTTP. Veja Configuração do MCP.