ドキュメント

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.txt

MCPトークンでは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/verify
2FAログインのステップ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/2fa
2要素認証がオンかどうかと、残りのリカバリーコードの数。
POST/api/auth/2fa/setup
TOTPの登録を開始します。シークレットと、QRコードが表す otpauth:// URIを返します。2FAはまだオンになりません。
POST/api/auth/2fa/enable
有効なコードで登録を確定します。リカバリーコードを返します。平文で存在するのはこのときだけです。
DELETE/api/auth/2fa
2要素認証をオフにします。
POST/api/auth/2fa/recovery-codes
新しいリカバリーコード一式を発行し、古いものを無効にします。
GET/api/auth/connections
アクセスを許可したOAuthクライアントを一覧します。
DELETE/api/auth/connections/:clientId
OAuthクライアント1つのアクセスを取り消します。
DELETE/api/auth/account
アカウントとその中身をすべて削除します。現在のパスワードが必要です。

タスク

GET/api/tasks
タスクを一覧します。ステータス、優先度、プロジェクト、親で絞り込み、タイトルとメモを検索できます。
POST/api/tasks
タスクを作成します。
POST/api/tasks/quick
クイック追加の文字列をそのまま渡してタスクを作成します。
POST/api/tasks/import
Todoist、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/reject
pending_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/runs
1つのタスクに記録されたエージェントの実行。
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/approve
1件の項目に提案された処置を適用します。
POST/api/grooming/items/:id/dismiss
1件の項目を見送り、タスクをそのままにします。

自律性とエージェント

GET/api/autonomy
自律性の台帳。プロジェクトとタグの区分ごとに、agent_ok がどこで獲得されたかを示します。読み取り専用で、何も付与しません。
POST/api/autonomy/revoke
ある区分への付与を取り消し、そのタスクを再び承認ゲートの内側に戻します。
GET/api/agents
エージェントの名簿。名前付きの各エージェントが行ったことを返します。?days= で期間を指定します。件数とタイムスタンプのみです。
GET/api/fleet
フリートのライブステータス:いま誰が何に取り組んでいるか。
GET/api/projects/:id/rejections
1つのプロジェクトでの最近の却下。自律性の減衰が参照する記録です。
GET/api/decisions
ボード全体で、エージェントが回答を待っている未解決の判断すべて。
POST/api/decisions/:id/answer
保留中の判断に回答し、そのタスクのブロックを解除します。

トリガー

GET/api/triggers
エージェントに今すぐ開始を求める未処理のリクエストすべて。「今すぐ実行」のクリックや @claude メンションから生まれ、まだ接続を待っているものです。
DELETE/api/triggers/:id
まだ引き受けられていないトリガーを取り下げます。
GET/api/trigger-webhook
trigger.created 用の送信Webhookが設定されているかどうか、最近の配信結果、および needs_rotation を返します。needs_rotation は、配信がシークレットそのもので署名されるようになる前に登録されたWebhookで true になり、新しいシークレットを取得するために置き換える必要があります。
PUT/api/trigger-webhook
WebhookのURLを設定または置き換えます。署名用シークレットは作成時に一度だけ返されます。各配信には X-Done-Signature が付きます。これは、X-Done-Timestamp の値、ピリオド、生のボディを連結したものを、そのシークレットをキーにしてHMAC-SHA256で計算した16進数の値です。
DELETE/api/trigger-webhook
Webhookを削除します。

ルーティンと予算

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/token
ICSフィードトークンを失効させます。
POST/api/calendar/oauth/start
Google 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/sync
Google Calendarから予定ありの時間帯を同期します。
DELETE/api/google/accounts/:id
Googleアカウントの接続を解除します。
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のセットアップ」をご覧ください。