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.txtUm 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/signupCria uma conta (e-mail + senha, mais um código de indicação `ref` opcional).
GET
/api/referralsSeu link de indicação, quem entrou por ele e o progresso até a próxima recompensa.
POST
/api/auth/loginInicia uma sessão e define um cookie. Com 2FA ativado, devolve um desafio; conclua em /api/auth/2fa/verify.
POST
/api/auth/magic-linkEnvia por e-mail um link de acesso de uso único para um endereço.
POST
/api/auth/magic-link/verifyTroca o token de um link de acesso por uma sessão de verdade. Não exige senha.
POST
/api/auth/2fa/verifyEtapa 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/logoutEncerra a sessão atual.
GET
/api/auth/meO usuário atual (incluindo se o e-mail foi confirmado) e se existe um token MCP.
GET
/api/bootstrapO 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/profileAtualiza o perfil: nome, fuso horário, avatar.
POST
/api/auth/password/verifyVerifica a senha atual (etapa 1 da troca de senha).
POST
/api/auth/passwordDefine uma nova senha. Exige um /password/verify recente nesta sessão (etapa 2).
POST
/api/auth/forgot-passwordSolicita um e-mail de redefinição de senha.
POST
/api/auth/reset-passwordConclui uma redefinição com o token enviado por e-mail.
POST
/api/auth/verify-emailConfirma um endereço com o token enviado por e-mail. Não exige sessão.
POST
/api/auth/resend-verificationReenvia o e-mail de confirmação para a conta conectada.
POST
/api/auth/mcp-tokenGera (ou gera de novo) o token MCP de acesso total da conta.
DELETE
/api/auth/mcp-tokenRevoga o token MCP de acesso total.
GET
/api/mcp-tokensLista os tokens MCP da conta (total, somente leitura, de um único projeto).
POST
/api/mcp-tokensEmite um token MCP com escopo (somente leitura ou um projeto).
DELETE
/api/mcp-tokens/:idRevoga um token MCP com escopo.
GET
/api/auth/2faSe a autenticação em duas etapas está ativada e quantos códigos de recuperação restam.
POST
/api/auth/2fa/setupInicia o cadastro de TOTP: devolve o segredo e o URI otpauth:// codificado no QR. Não ativa o 2FA.
POST
/api/auth/2fa/enableConfirma 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/2faDesativa a autenticação em duas etapas.
POST
/api/auth/2fa/recovery-codesEmite um novo conjunto de códigos de recuperação e invalida os antigos.
GET
/api/auth/connectionsLista os clientes OAuth aos quais você concedeu acesso.
DELETE
/api/auth/connections/:clientIdRevoga o acesso de um cliente OAuth.
DELETE
/api/auth/accountExclui a conta e tudo o que há nela. Exige a senha atual.
Tarefas
GET
/api/tasksLista tarefas. Filtra por status, prioridade, projeto e tarefa principal; busca em título e notas.
POST
/api/tasksCria uma tarefa.
POST
/api/tasks/quickCria uma tarefa a partir de um texto bruto de captura rápida.
POST
/api/tasks/importImporta uma exportação em CSV do Todoist, TickTick, Asana, Trello ou Notion (ou um CSV genérico).
GET
/api/tasks/:idObtém uma tarefa.
PATCH
/api/tasks/:idAtualiza uma tarefa.
DELETE
/api/tasks/:idExclui uma tarefa (em cascata, com as subtarefas). Move para a Lixeira, não é uma exclusão definitiva.
POST
/api/tasks/bulk-assignAtribui um conjunto de IDs de tarefas (até 200) a um usuário ou a um agente de IA.
POST
/api/tasks/bulk-deleteMove um conjunto de IDs de tarefas para a Lixeira em uma única chamada.
POST
/api/tasks/bulk-moveMove um conjunto de IDs de tarefas para um projeto (ou para fora de um) em uma única chamada.
POST
/api/tasks/:id/decomposeDivide uma tarefa em subtarefas a partir de uma lista de títulos.
POST
/api/tasks/:id/approveAprova uma conclusão proposta por um agente (pending_approval → done).
POST
/api/tasks/:id/rejectRejeita uma tarefa em pending_approval, com comentário opcional (→ in_progress).
POST
/api/tasks/:id/approve-planAprova um plano proposto (plan_proposed → in_progress).
POST
/api/tasks/:id/reject-planRejeita um plano proposto, com comentário opcional.
GET
/api/tasks/:id/evidenceAquilo 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/runsAs execuções de agentes registradas em uma tarefa.
GET
/api/tasks/:id/decisionsAs perguntas que um agente deixou nesta tarefa.
POST
/api/tasks/:id/pauseInterrompe todo agente que mexe nesta tarefa até ela ser retomada.
POST
/api/tasks/:id/resumeRetoma uma tarefa pausada. Só para pessoas: não há equivalente no MCP.
POST
/api/resurfaceTira da espera as tarefas cuja data de retorno chegou.
Lixeira
GET
/api/trashLista as tarefas excluídas, da mais recente para a mais antiga.
POST
/api/tasks/:id/restoreRestaura uma tarefa excluída (e as subtarefas que foram excluídas com ela).
DELETE
/api/trash/:idExclui para sempre uma tarefa da lixeira.
DELETE
/api/trashEsvazia a lixeira.
Etiquetas
GET
/api/tagsLista as etiquetas.
POST
/api/tagsCria uma etiqueta.
DELETE
/api/tags/:idExclui uma etiqueta (ela sai de todas as tarefas que a tinham).
GET
/api/task-tagsLista todos os pares tarefa↔etiqueta da conta.
POST
/api/tasks/:id/tagsAplica uma etiqueta a uma tarefa.
DELETE
/api/tasks/:id/tags/:tagIdRemove uma etiqueta de uma tarefa.
Dependências
GET
/api/dependenciesLista todas as relações de bloqueio da conta.
GET
/api/tasks/:id/dependenciesLista os bloqueios de uma tarefa.
POST
/api/tasks/:id/dependenciesAdiciona um bloqueio (com verificação de ciclos).
DELETE
/api/tasks/:id/dependencies/:blockerIdRemove um bloqueio.
Atividade
GET
/api/tasks/:id/commentsLista o feed de atividade de uma tarefa (comentários + histórico de status).
POST
/api/tasks/:id/commentsAdiciona um comentário, de sua autoria ou de um agente de IA.
GET
/api/activityA 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-shippedO 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/digestTarefas atrasadas, que vencem hoje, paradas e concluídas recentemente.
GET
/api/reviewO consolidado da revisão semanal.
GET
/api/statsTendência de conclusão, sequência e tarefas abertas por prioridade e por projeto.
Metas
GET
/api/goalsLista as metas.
POST
/api/goalsCria uma meta.
PATCH
/api/goals/:idAtualiza uma meta.
DELETE
/api/goals/:idExclui uma meta.
POST
/api/goals/:id/breakdownCria na meta uma tarefa de divisão em etapas atribuída ao Claude. É a ação “Propor etapas”.
Caixa de capturas
GET
/api/captureTarefas propostas por agentes aguardando triagem, mais os números de aceitas e dispensadas. ?state=pending|accepted|dismissed|all.
POST
/api/capture/sweepVarre o calendário em busca de coisas que valem uma sugestão e as registra como sugestões.
POST
/api/capture/:id/acceptTransforma uma sugestão em uma tarefa de verdade. A tarefa sempre começa com aprovação exigida (agent_ok: false).
POST
/api/capture/:id/dismissDispensa uma sugestão sem criar nada.
Faxina
GET
/api/groomingA 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/proposalsPropostas de faxina agrupadas. ?state=open|resolved|all.
POST
/api/grooming/items/:id/approveAplica o destino proposto para um item.
POST
/api/grooming/items/:id/dismissRecusa um item e deixa a tarefa como está.
Autonomia e agentes
GET
/api/autonomyO registro de autonomia: onde agent_ok foi conquistado, por categoria de projeto e de etiqueta. É só leitura; não concede nada.
POST
/api/autonomy/revokeRetira a concessão de uma categoria e põe as tarefas dela de novo atrás da etapa de aprovação.
GET
/api/agentsA lista de agentes: o que cada agente com nome fez. ?days= define o período. Só contagens e datas.
GET
/api/fleetEstado da frota ao vivo: quem está trabalhando em quê agora.
GET
/api/projects/:id/rejectionsRejeições recentes em um projeto. É o registro em que se baseia a perda de autonomia.
GET
/api/decisionsTodas as decisões abertas que algum agente está esperando, no quadro inteiro.
POST
/api/decisions/:id/answerResponde a uma decisão pendente e desbloqueia a tarefa.
Gatilhos
GET
/api/triggersTodos 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/:idRetira um gatilho enquanto ninguém o assumiu.
GET
/api/trigger-webhookSe 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-webhookDefine 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-webhookRemove o webhook.
Rotina e limites
GET
/api/routineOs limites em que uma rotina agendada para.
PATCH
/api/routineAtualiza esses limites.
GET
/api/routine/nightO gasto em relação ao limite desta noite. ?since= substitui a janela padrão de 12 horas.
Projetos
GET
/api/projectsLista os projetos.
POST
/api/projectsCria um projeto.
PATCH
/api/projects/:idAtualiza um projeto.
DELETE
/api/projects/:idExclui um projeto.
Espaços de trabalho e compartilhamento
GET
/api/workspacesLista os espaços de trabalho de que você participa.
POST
/api/workspaces/:id/pausePara um quadro: nenhum agente recebe trabalho dele até ser retomado.
POST
/api/workspaces/:id/resumeRetoma um quadro parado. Só para pessoas: não há equivalente no MCP.
GET
/api/workspaces/:id/membersLista os membros de um espaço de trabalho.
DELETE
/api/workspaces/:id/members/:memberIdRemove um membro de um espaço de trabalho.
POST
/api/invitesConvida 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/acceptResgata o token de um convite para entrar.
Execuções dos agentes
GET
/api/runsExecuçõ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/calendarConfigurações de calendário e agendamento e o token do feed ICS.
PUT
/api/calendarAtualiza as configurações de calendário e do horário de trabalho.
POST
/api/calendar/tokenGera o token do feed ICS para assinatura.
DELETE
/api/calendar/tokenRevoga o token do feed ICS.
POST
/api/calendar/oauth/startInicia a conexão de um Google Calendar: devolve a URL de consentimento para onde enviar o navegador.
GET
/api/calendar/writebackSe Planejar meu dia grava blocos de foco em um calendário que pertence ao Done, e em qual.
POST
/api/calendar/writeback/syncReconcilia o calendário de gravação agora, em vez de esperar a varredura noturna.
DELETE
/api/calendar/writebackDesativa a gravação e para de mexer naquele calendário.
GET
/api/google/accountsLista as contas do Google Calendar conectadas.
POST
/api/google/syncSincroniza os horários ocupados do Google Calendar.
DELETE
/api/google/accounts/:idDesconecta uma conta do Google.
GET
/api/calendar/eventsLista os eventos de calendário em cache (títulos, pessoas) em um intervalo de datas.
GET
/api/calendar/matchesCorrespondências sugeridas entre tarefa↔evento, por tarefa, por evento ou por intervalo de datas.
GET
/api/tasks/:id/calendar-linksLista os eventos de calendário vinculados a uma tarefa.
POST
/api/tasks/:id/calendar-linksVincula uma tarefa ao evento de calendário de que ela trata.
DELETE
/api/tasks/:id/calendar-links/:eventIdDesvincula uma tarefa de um evento de calendário.
Notificações e tempo real
GET
/api/notificationsObtém as preferências de notificação (resumo por e-mail).
PUT
/api/notificationsAtualiza as preferências de notificação.
GET
/api/eventsFluxo 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/exportExporta as tarefas em CSV ou Markdown.
PUT
/api/view-prefsGrava as preferências de visualização (ordem, agrupamento, quais painéis estão abertos).
PUT
/api/saved-viewsSubstitui as visualizações salvas da conta.
GET
/api/widgetUm 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
/mcpO endpoint MCP remoto: JSON-RPC sobre Streamable HTTP. Veja Configuração do MCP.