RAISELIFE / API
公開 REST API
外部 AI (ChatGPT / Claude / Zapier / Siri Shortcuts / curl 等) から RaiseLife のタスクを操作するための REST API です。 ユーザーごとに発行する API Key で認証します。
クイックスタート (3 分)
- アプリ を開いて Google でログイン
- 右上の 「API Key」 ボタンをクリック
- 名前 (例:
ChatGPT) を入力して 「新規発行」 - 発行された
rl_...の 64 文字を安全な場所にコピー保存 (再表示できません) - 以下の curl 例で動作確認、または ChatGPT Custom GPT のアクション作成に進む
認証
全エンドポイントは HTTP ヘッダに以下を付けて認証します:
Authorization: Bearer rl_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
- Key は Firestore に SHA-256 ハッシュのみ保存、本体はサーバー側に残らない
- 不正利用を感じたら、アプリ内 API Key 管理モーダルで該当 Key を「無効化」できる
- 複数 Key を発行して用途別に使い分け可 (例: ChatGPT / Zapier / 自作スクリプト)
エンドポイント
GET
/api/state相棒の現在の状態 + タスク一覧 + 進化段階を取得
RESPONSE
{
"ok": true,
"state": {
"eggKey": "chi",
"buddyName": "クロベエ",
"currentStage": 3,
"tokuPt": 237,
"branches": {
"growth": "B",
"mature": "B1"
},
"equipment": [
"古時計",
"詠み札"
],
"skills": [
"あくび",
"静かに読む"
],
"titles": [
"はじまりの子",
"柔らかな者"
],
"streak": 7,
"tasks": [
"..."
]
}
}POST
/api/tasksタスクを追加 (= 嫌度と分類を指定)
- category: habit (毎日の習慣) / daily (今日の日課) / todo (1 回限り)
- hardness: 1〜5 の整数、嫌度が高いほど徳 pt が多い (1=1pt, 2=3pt, 3=6pt, 4=10pt, 5=15pt)
REQUEST BODY
{
"name": "3ヶ月放置の経費精算",
"category": "todo",
"hardness": 5
}RESPONSE
{
"ok": true,
"task": {
"id": "t-1793250000-abcde",
"name": "3ヶ月放置の経費精算",
"category": "todo",
"hardness": 5,
"createdAt": "2026-10-29T06:00:00.000Z"
},
"state": "... (更新後の GameState)"
}GET
/api/tasksタスク一覧のみを返す (state の tasks と同じ内容)
POST
/api/tasks/{id}/completeタスクを完了として記録 → 徳 pt が加算され、閾値を超えれば進化イベント
- 進化は決定論的 (徳 pt 累積 100/500/2,000/8,000/20,000 で発動)
- 分岐進化は 3 軸: 平均嫌度 / タスク傾向 / 連続日数
RESPONSE
{
"ok": true,
"earned": 15,
"evolved": true,
"previousStage": 2,
"newStage": 3,
"state": ".."
}curl 例
1. タスクを追加
curl -X POST https://raise-life.pages.dev/api/tasks \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"name":"3ヶ月放置の経費精算","category":"todo","hardness":5}'2. 現在の状態を取得
curl -H "Authorization: Bearer $API_KEY" \ https://raise-life.pages.dev/api/state
3. タスクを完了
TASK_ID="t-..."
curl -X POST "https://raise-life.pages.dev/api/tasks/${TASK_ID}/complete" \
-H "Authorization: Bearer $API_KEY"🤖 ChatGPT Custom GPT (Actions) 連携
ChatGPT Plus の Custom GPT で RaiseLife を直接操作できます。 ChatGPT に「経費精算が溜まってる」と話すだけで自動登録 → 相棒の状態報告まで走ります。
- ChatGPT で GPTs → 新規作成 → Configure タブ
- Actions → Create new action
- Authentication → API Key → Auth Type: Bearer → RaiseLife で発行した
rl_...を貼り付け - Schema に
openapi.yamlの中身を貼り付け (または URL をインポート) - Instructions に以下を貼り付け:
あなたは RaiseLife (徳を積むほど相棒が育つ habit tracker) の AI コーチです。 ユーザーのメモや相談から、以下のルールでタスクを登録してください: - 「嫌・面倒・不快」な行動のみ登録 (楽しいことは登録しない) - 嫌度は 1(軽い) 〜 5(重い) で見積もる - カテゴリは habit(毎日の習慣)/daily(今日やる日課)/todo(1 回限り) から選ぶ - 登録後、ユーザーに「相棒の現在のレベルと次の進化までの残り pt」を伝える ユーザーから「経費精算が溜まってる」のような相談があったら: → addTask で category:"todo" hardness:5 で登録 → getState で相棒の状態を取得して報告
Claude の MCP として使いたい場合は、今後 raise-life MCP サーバーとして公開予定 (Phase 2)。 Zapier / Make / n8n / iOS ショートカットも HTTP アクションでそのまま使えます。
エラーコード
- 400 リクエスト不正 (必須フィールド欠落、型違反)
- 401 API Key 未指定 or 無効
- 403 API Key は有効だが権限無し
- 404 リソース (タスク等) が見つからない
- 500 サーバーエラー (Firestore / Service Account 設定問題)
本文は { "error": "..." } で返ります。
セキュリティメモ
- API Key は Bearer Token なので HTTPS 必須 (本番は Cloudflare が強制)
- Key は Firestore に SHA-256 ハッシュのみ保存、サーバーからも本体は見えない
- Key を漏洩したら即座にアプリ内モーダルで「無効化」→ 新規発行
- CORS: 全オリジン許可 (
Access-Control-Allow-Origin: *)、Browser JS からも叩ける - Rate Limit: 現状未実装、乱用は Cloudflare 側で検知次第ブロック
質問・要望は Linear Project へ · OpenAPI 仕様: /openapi.yaml