ドキュメント
APIリファレンス
すべてのエンドポイントは認証済みのアカウントにスコープされ、REST APIはWebアプリが設定するセッションCookieで認証します。スクリプトやエージェントは、代わりにMCPエンドポイントを使います。
リクエストとレスポンスはすべてJSONです。すべての/api/*ルートは、POST /api/auth/loginが設定するセッションCookieで認証します:
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.txtMCPトークンではREST APIを認証できません。Authorization: Bearer <mcp-token>ヘッダーを受け付けるルートはGET /api/eventsの1つだけです。エージェントがすでに持っている認証情報で変更を購読できるようにするためです。それ以外の/api/*ルートは、ベアラートークンに対して401を返します。
これは漏れではなく意図的な設計です。MCPトークンが流出しても、アカウントのREST API全体を操作されないようにしています。スクリプトやエージェントは、代わりにPOST /mcpを使ってください。トークンはそのためのものです。
curl -X GET https://trydone.app/api/events \
-H "Authorization: Bearer <your-generated-mcp-token>"認証とアカウント
POST
/api/auth/signupアカウントを作成します(メールアドレスとパスワード、任意で紹介コード `ref`)。
GET
/api/referrals自分の紹介リンク、そこから登録した人、次の特典までの進み具合。
POST
/api/auth/loginセッションを開始し、Cookieを設定します。2FAがオンの場合は代わりにチャレンジを返すので、/api/auth/2fa/verify で完了します。
POST
/api/auth/magic-link指定したアドレスに、1回限りのログインリンクをメールで送ります。
POST
/api/auth/magic-link/verifyマジックリンクのトークンを実際のセッションに引き換えます。パスワードは不要です。
POST
/api/auth/2fa/verify2FAログインのステップ2:チャレンジとコードを実際のセッションに引き換えます。セッションは不要です。
POST
/api/auth/logout現在のセッションを終了します。
GET
/api/auth/me現在のユーザー(メールアドレスが確認済みかどうかを含む)と、MCPトークンの有無。
GET
/api/bootstrap現在のユーザーとすべてのリスト(タスク、プロジェクト、ゴール、依存関係、タグ、タスク↔タグ)を1回のリクエストで返します。Webクライアントのポーリング用です。
PATCH
/api/auth/profileプロフィール(名前、タイムゾーン、アバター)を更新します。
POST
/api/auth/password/verify現在のパスワードを確認します(パスワード変更のステップ1)。
POST
/api/auth/password新しいパスワードを設定します。このセッションで直前に /password/verify を済ませている必要があります(ステップ2)。
POST
/api/auth/forgot-passwordパスワード再設定メールをリクエストします。
POST
/api/auth/reset-passwordメールで届いたトークンで再設定を完了します。
POST
/api/auth/verify-emailメールで届いたトークンでアドレスを確認します。セッションは不要です。
POST
/api/auth/resend-verificationログイン中のアカウントに確認メールを再送します。
POST
/api/auth/mcp-tokenアカウントのフルアクセスMCPトークンを生成(または再生成)します。
DELETE
/api/auth/mcp-tokenフルアクセスMCPトークンを失効させます。
GET
/api/mcp-tokensアカウントのMCPトークン(フル、読み取り専用、単一プロジェクト)を一覧します。
POST
/api/mcp-tokensスコープ付きのMCPトークン(読み取り専用または1プロジェクト)を発行します。
DELETE
/api/mcp-tokens/:idスコープ付きのMCPトークンを1つ失効させます。
GET
/api/auth/2fa2要素認証がオンかどうかと、残りのリカバリーコードの数。
POST
/api/auth/2fa/setupTOTPの登録を開始します。シークレットと、QRコードが表す otpauth:// URIを返します。2FAはまだオンになりません。
POST
/api/auth/2fa/enable有効なコードで登録を確定します。リカバリーコードを返します。平文で存在するのはこのときだけです。
DELETE
/api/auth/2fa2要素認証をオフにします。
POST
/api/auth/2fa/recovery-codes新しいリカバリーコード一式を発行し、古いものを無効にします。
GET
/api/auth/connectionsアクセスを許可したOAuthクライアントを一覧します。
DELETE
/api/auth/connections/:clientIdOAuthクライアント1つのアクセスを取り消します。
DELETE
/api/auth/accountアカウントとその中身をすべて削除します。現在のパスワードが必要です。
タスク
GET
/api/tasksタスクを一覧します。ステータス、優先度、プロジェクト、親で絞り込み、タイトルとメモを検索できます。
POST
/api/tasksタスクを作成します。
POST
/api/tasks/quickクイック追加の文字列をそのまま渡してタスクを作成します。
POST
/api/tasks/importTodoist、TickTick、Asana、Trello、NotionのCSVエクスポート(または汎用のCSV)をインポートします。
GET
/api/tasks/:idタスクを1件取得します。
PATCH
/api/tasks/:idタスクを更新します。
DELETE
/api/tasks/:idタスクを削除します(サブタスクにも連鎖します)。完全削除ではなく、ゴミ箱に移動します。
POST
/api/tasks/bulk-assign複数のタスクID(最大200件)をユーザーまたはAIエージェントに割り当てます。
POST
/api/tasks/bulk-delete複数のタスクIDを1回の呼び出しでゴミ箱に移動します。
POST
/api/tasks/bulk-move複数のタスクIDを1回の呼び出しでプロジェクトに移動(またはプロジェクトから外)します。
POST
/api/tasks/:id/decomposeタイトルのリストから、タスクをサブタスクに分割します。
POST
/api/tasks/:id/approveエージェントが提案した完了を承認します(pending_approval → done)。
POST
/api/tasks/:id/rejectpending_approval のタスクを却下します。フィードバックは任意です(→ in_progress)。
POST
/api/tasks/:id/approve-plan提案された計画を承認します(plan_proposed → in_progress)。
POST
/api/tasks/:id/reject-plan提案された計画を却下します。フィードバックは任意です。
GET
/api/tasks/:id/evidence承認にあたって信頼の根拠となるもの:基準の達成状況、予算に対する消費、レシート、成果物、トレースのリンク。
GET
/api/tasks/:id/runs1つのタスクに記録されたエージェントの実行。
GET
/api/tasks/:id/decisionsエージェントがこのタスクで保留にしている質問。
POST
/api/tasks/:id/pause再開されるまで、このタスクに関わるすべてのエージェントを停止します。
POST
/api/tasks/:id/resume一時停止中のタスクを再開します。人間専用で、MCPに対応するツールはありません。
POST
/api/resurface再表示日を迎えたタスクの待機を解除します。
ゴミ箱
GET
/api/trash削除済みのタスクを新しい順に一覧します。
POST
/api/tasks/:id/restore削除済みのタスク(と、一緒に削除されたサブタスク)を復元します。
DELETE
/api/trash/:idゴミ箱のタスクを1件、完全に削除します。
DELETE
/api/trashゴミ箱を空にします。
タグ
GET
/api/tagsタグを一覧します。
POST
/api/tagsタグを作成します。
DELETE
/api/tags/:idタグを削除します(付いていたすべてのタスクから外れます)。
GET
/api/task-tagsアカウント内のタスク↔タグの組み合わせをすべて一覧します。
POST
/api/tasks/:id/tagsタスクにタグを付けます。
DELETE
/api/tasks/:id/tags/:tagIdタスクからタグを外します。
依存関係
GET
/api/dependenciesアカウント内のブロック関係(blocked-by)をすべて一覧します。
GET
/api/tasks/:id/dependenciesタスクをブロックしているタスクを一覧します。
POST
/api/tasks/:id/dependenciesブロッカーを追加します(循環チェックあり)。
DELETE
/api/tasks/:id/dependencies/:blockerIdブロッカーを削除します。
アクティビティ
GET
/api/tasks/:id/commentsタスクのアクティビティフィード(コメントとステータス履歴)を一覧します。
POST
/api/tasks/:id/comments自分またはAIエージェントを投稿者として、コメントを追加します。
GET
/api/activityボード全体のアクティビティレール。閲覧できるすべてのタスクで起きたことを新しい順に返します。?limit= で件数を制限できます。
GET
/api/claude-shippedエージェントの仕事のフィード:Claudeが実際に仕上げたもの。?days=1|7|30 で期間を指定します。
ダイジェストとレビュー
GET
/api/digest期限切れ、今日が期限、停滞中、最近完了したタスク。
GET
/api/review週次レビューのまとめ。
GET
/api/stats完了数の推移、連続記録、未完了タスクの優先度別・プロジェクト別の内訳。
ゴール
GET
/api/goalsゴールを一覧します。
POST
/api/goalsゴールを作成します。
PATCH
/api/goals/:idゴールを更新します。
DELETE
/api/goals/:idゴールを削除します。
POST
/api/goals/:id/breakdownゴールの下に、Claudeに割り当てた分解タスクを作成します。「ステップを提案」のアクションです。
追加候補インボックス
GET
/api/captureエージェントが提案した、振り分け待ちのタスクと、採用・却下の健全性を示す数値。?state=pending|accepted|dismissed|all。
POST
/api/capture/sweepカレンダーを調べて提案する価値のあるものを探し、候補として登録します。
POST
/api/capture/:id/accept候補を実際のタスクにします。タスクは必ずゲート付き(agent_ok: false)で始まります。
POST
/api/capture/:id/dismiss何も作成せずに候補を却下します。
整理
GET
/api/grooming停滞チェック。動きの止まった未完了の仕事を、判断材料となる根拠とともに返します。?days= でしきい値を、?limit= で件数を指定します。
GET
/api/grooming/proposalsまとめられた整理の提案。?state=open|resolved|all。
POST
/api/grooming/items/:id/approve1件の項目に提案された処置を適用します。
POST
/api/grooming/items/:id/dismiss1件の項目を見送り、タスクをそのままにします。
自律性とエージェント
GET
/api/autonomy自律性の台帳。プロジェクトとタグの区分ごとに、agent_ok がどこで獲得されたかを示します。読み取り専用で、何も付与しません。
POST
/api/autonomy/revokeある区分への付与を取り消し、そのタスクを再び承認ゲートの内側に戻します。
GET
/api/agentsエージェントの名簿。名前付きの各エージェントが行ったことを返します。?days= で期間を指定します。件数とタイムスタンプのみです。
GET
/api/fleetフリートのライブステータス:いま誰が何に取り組んでいるか。
GET
/api/projects/:id/rejections1つのプロジェクトでの最近の却下。自律性の減衰が参照する記録です。
GET
/api/decisionsボード全体で、エージェントが回答を待っている未解決の判断すべて。
POST
/api/decisions/:id/answer保留中の判断に回答し、そのタスクのブロックを解除します。
トリガー
GET
/api/triggersエージェントに今すぐ開始を求める未処理のリクエストすべて。「今すぐ実行」のクリックや @claude メンションから生まれ、まだ接続を待っているものです。
DELETE
/api/triggers/:idまだ引き受けられていないトリガーを取り下げます。
GET
/api/trigger-webhooktrigger.created 用の送信Webhookが設定されているかどうか、最近の配信結果、および needs_rotation を返します。needs_rotation は、配信がシークレットそのもので署名されるようになる前に登録されたWebhookで true になり、新しいシークレットを取得するために置き換える必要があります。
PUT
/api/trigger-webhookWebhookのURLを設定または置き換えます。署名用シークレットは作成時に一度だけ返されます。各配信には X-Done-Signature が付きます。これは、X-Done-Timestamp の値、ピリオド、生のボディを連結したものを、そのシークレットをキーにしてHMAC-SHA256で計算した16進数の値です。
DELETE
/api/trigger-webhookWebhookを削除します。
ルーティンと予算
GET
/api/routineスケジュール実行のルーティンが停止する上限。
PATCH
/api/routineその上限を更新します。
GET
/api/routine/night今夜の予算に対する消費。?since= で既定の12時間の期間を上書きできます。
プロジェクト
GET
/api/projectsプロジェクトを一覧します。
POST
/api/projectsプロジェクトを作成します。
PATCH
/api/projects/:idプロジェクトを更新します。
DELETE
/api/projects/:idプロジェクトを削除します。
ワークスペースと共有
GET
/api/workspaces所属しているワークスペースを一覧します。
POST
/api/workspaces/:id/pauseボードを停止します。再開されるまで、そのボードの仕事はどのエージェントにも渡されません。
POST
/api/workspaces/:id/resume停止中のボードを再開します。人間専用で、MCPに対応するツールはありません。
GET
/api/workspaces/:id/membersワークスペースのメンバーを一覧します。
DELETE
/api/workspaces/:id/members/:memberIdワークスペースからメンバーを削除します。
POST
/api/invitesワークスペースまたは単一のプロジェクトに招待し、リンクをメールで送ります。相手のメールアドレスが必要です。
POST
/api/invites/accept招待トークンを使って参加します。
エージェントの実行
GET
/api/runs最近のエージェントの実行と、ステータス・ツール呼び出し・トークンの集計。
カレンダーとGoogle同期
GET
/api/calendarカレンダーとスケジュールの設定、およびICSフィードのトークン。
PUT
/api/calendarカレンダーとスケジュール可能な時間帯の設定を更新します。
POST
/api/calendar/token購読用のICSフィードトークンを生成します。
DELETE
/api/calendar/tokenICSフィードトークンを失効させます。
POST
/api/calendar/oauth/startGoogle Calendarの接続を開始します。ブラウザを移動させる同意画面のURLを返します。
GET
/api/calendar/writeback「今日の計画を立てる」が、Doneの管理するカレンダーに集中ブロックを書き戻すかどうかと、その対象のカレンダー。
POST
/api/calendar/writeback/sync毎晩の処理を待たずに、書き戻し用カレンダーを今すぐ整合します。
DELETE
/api/calendar/writeback書き戻しをオフにし、そのカレンダーへの操作をやめます。
GET
/api/google/accounts接続済みのGoogle Calendarアカウントを一覧します。
POST
/api/google/syncGoogle Calendarから予定ありの時間帯を同期します。
DELETE
/api/google/accounts/:idGoogleアカウントの接続を解除します。
GET
/api/calendar/events指定した期間の、キャッシュ済みのカレンダーの予定(タイトル、参加者)を一覧します。
GET
/api/calendar/matchesタスク↔予定の組み合わせ候補を、タスク別、予定別、または期間別に返します。
GET
/api/tasks/:id/calendar-linksタスクにリンクされたカレンダーの予定を一覧します。
POST
/api/tasks/:id/calendar-linksタスクを、関連するカレンダーの予定にリンクします。
DELETE
/api/tasks/:id/calendar-links/:eventIdタスクとカレンダーの予定のリンクを解除します。
通知とライブ更新
GET
/api/notifications通知設定(メールダイジェスト)を取得します。
PUT
/api/notifications通知設定を更新します。
GET
/api/eventsタスクとアクティビティの変更を配信するServer-Sent Eventsのストリーム。最後のフレームのid(Last-Event-ID、または ?cursor=)を付けて再接続すると、見逃したタスクの変更とアクティビティを再生できます。
GET
/api/exportタスクをCSVまたはMarkdownでエクスポートします。
PUT
/api/view-prefs表示設定(並び順、グループ化、開いているレール)を保存します。
PUT
/api/saved-viewsアカウントの保存済みビューを置き換えます。
GET
/api/widgetホーム画面ウィジェット用のコンパクトなボードのスナップショット。?limit=、?days=、およびデバイス側の「今日」を伝える X-Client-Date ヘッダーに対応します。
MCP
POST
/mcpリモートMCPエンドポイント。Streamable HTTP上のJSON-RPCです。「MCPのセットアップ」をご覧ください。