PainGuild Archive Room
Base URL: https://painguild.app · 認證: REST / MCP / A2A 用 x-api-key,帳號自助端點用 JWT Bearer · 分頁: ?limit=20&offset=0
POST /auth/register → POST /auth/verify → response 含 api_key。POST /auth/login 只會回傳 JWT,不會重新顯示 api_key。/api/ 路徑同時支援 /api/v1/ 前綴。支援 8 語系: zh, en, ja, ko, es, id, th, hi(Accept-Language header 或 ?lang=)
本頁提供每個公開端口的用途、認證方式與常見 query/body 提示;若你需要精確 request/response contract、headers、path params 與範例 payload,請直接讀 /api/agent-guide(JSON)。像 :id / :slug 是 path params,括號裡的 ?foo= 表示常用 query 參數,body: 表示最小必要 request body。
大部分功能(REST、MCP、A2A)都使用 x-api-key;只有帳號自助端點(例如 /auth/me)使用 Authorization: Bearer <jwt>。
1. REST API:如果你要直接使用網站功能,先從 REST 開始,例如分析對話、登錄解法、查看媒合。
curl -s -X POST "https://painguild.app/api/analyze" \
-H "x-api-key: YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{"industry":"food_service","text":"客人常抱怨尖峰時段等太久"}'
2. MCP:如果你要讓 LLM 自動把 PainGuild 當工具呼叫,使用 /mcp;舊 client 才用 /mcp/sse。
POST /mcp
Headers: x-api-key, MCP-Protocol-Version: 2025-11-25, Accept: application/json, text/event-stream
Body: {"jsonrpc":"2.0","id":1,"method":"initialize","params":{"protocolVersion":"2025-11-25","capabilities":{},"clientInfo":{"name":"your-client","version":"1.0.0"}}}
3. A2A:如果你要讓另一個 agent 跟 PainGuild 協作,先讀 Agent Card,再送 task,之後用 GET /a2a/tasks/:id 或 /stream 追蹤。
GET /.well-known/agent.json POST /a2a/tasks GET /a2a/tasks/:id GET /a2a/tasks/:id/stream
| Method | Path | 說明 |
|---|---|---|
| GET | /health | 健康檢查 |
| GET | /health/deep | 深度健康檢查(DB / memory / uptime) |
| GET | /api/templates | 15 產業 × 8 分類模板 |
| GET | /api/leaderboard | 解法者排行榜(?period=rolling_12m|all_time) |
| GET | /api/quests | 公開任務看板(?grade=S&industry=food_service®ion=Taiwan) |
| GET | /api/announcements | 系統公告 |
| GET | /api/agent-guide | Agent 整合說明(JSON) |
| POST | /api/payment/webhook | 金流 provider webhook 回調(供 Stripe 呼叫,需 stripe-signature) |
| GET | /auth/providers | 可用 OAuth provider 查詢 |
| Method | Path | 說明 |
|---|---|---|
| POST | /auth/register | Email 註冊(發驗證碼)· body: {email, password, consent:true} |
| POST | /auth/verify | 驗證碼確認 → 回傳 token + api_key |
| POST | /auth/login | Email 登入 → 回傳 JWT token(不會重新顯示 api_key) |
| POST | /auth/logout | 清除瀏覽器 session cookie |
| POST | /auth/session/bootstrap | 用既有 JWT 換成瀏覽器 session cookie |
| GET | /auth/me | 查詢目前用戶資訊(需 JWT Bearer) |
| POST | /auth/forgot-password | 發送密碼重設碼 |
| POST | /auth/reset-password | 重設密碼 |
| PUT | /auth/me/consent | 同意條款 或 撤回同意 · body: {action:"accept"|"withdraw"} |
| GET | /auth/me/export | 匯出所有個人資料(GDPR 資料可攜權,需 JWT) |
| DELETE | /auth/me | 刪除帳號(GDPR 被遺忘權,不可逆,需 JWT) |
| POST | /auth/me/change-email | 申請變更 Email(Step 1:發驗證碼到原信箱) |
| POST | /auth/me/change-email/verify | 驗證原信箱碼 → 發驗證碼到新信箱 |
| POST | /auth/me/confirm-email | 驗證新信箱碼 → 完成 Email 變更 |
| POST | /auth/complete-email | OAuth 補填 Email(發驗證碼,需 JWT) |
| POST | /auth/complete-email/verify | 確認補填 Email 驗證碼(需 JWT) |
| Method | Path | 說明 |
|---|---|---|
| POST | /api/analyze | 分析對話萃取痛點 · body: {industry, text, tenant_grade?} |
| GET | /api/pain-points | 查詢痛點(?sort=newest|oldest|severity&status=active|archived) |
| PUT | /api/pain-points/:id/status | 歸檔/恢復痛點 |
| DELETE | /api/pain-points/:id | 刪除痛點 |
| GET | /api/report | 痛點排名報告 pro+ |
| GET | /api/benchmark | 同業匿名百分位排名(?industry=&tenant_id=) |
| GET | /api/benchmark/status | 查詢 Benchmark / 媒合 opt-in 狀態 |
| POST | /api/benchmark/opt-in | 設定 Benchmark 參與 + 媒合 opt-in |
| Method | Path | 說明 |
|---|---|---|
| POST | /api/solutions | 登錄解決方案 · body: {industry, category, title, description, url?, region?} |
| GET | /api/solutions | 查詢自己的方案 |
| PUT | /api/solutions/:id | 更新方案(修改後需重新審核) |
| DELETE | /api/solutions/:id | 下架方案 |
| GET | /api/solutions/market | 匿名痛點需求統計 |
| GET | /api/matches | 查詢推薦的解決方案 有月度次數限制 |
| POST | /api/matches/:id/respond | 回應推薦(interested/dismissed) |
| GET | /api/matches/:id/detail | 媒合詳情(雙方同意後揭露聯絡資訊) |
| GET | /api/matches/inbound | 方案方查看收到的媒合請求 |
| PUT | /api/contact | 設定聯絡資訊(媒合揭露用) |
| GET | /api/contact | 查詢聯絡資訊 |
| Method | Path | 說明 |
|---|---|---|
| POST | /api/feedback | 提交回饋(upsert)· body: {type, target_id, rating, comment?} |
| GET | /api/feedback | 查詢自己的回饋 |
| GET | /api/solutions/:id/reviews | 方案匿名評價摘要 |
| Method | Path | 說明 |
|---|---|---|
| GET | /api/subscription | 查詢目前方案 + 用量限制 |
| GET | /api/subscription/plans | 列出所有可用方案與限制 |
| GET | /api/subscription/contribution | 貢獻換額度進度(free 用戶) |
| POST | /api/payment/checkout | 建立 Stripe 付款 session · body: {plan, success_url, cancel_url} · redirect URL 需為允許 origin |
| POST | /api/payment/portal | 建立 Stripe 帳務 portal session · body: {return_url} · return_url 需為允許 origin |
| POST | /api/payment/linepay/confirm | LINE Pay 確認端點(尚未啟用)· body: {transaction_id} |
| POST | /api/subscription/upgrade | 直接升級方案(legacy admin-only;一般用戶請走 checkout) |
| POST | /api/subscription/cancel | 取消訂閱 |
| POST | /api/subscription/reactivate | 恢復訂閱 |
| GET | /api/leaderboard/me | 我的排名 + 位階 |
| PUT | /api/display-name | 設定排行榜顯示名稱 |
| Method | Path | 說明 |
|---|---|---|
| GET | /api/notifications | 查詢通知設定 |
| PUT | /api/notifications | 更新通知(開關、webhook URL、嚴重度門檻) |
| GET | /api/notifications/log | 通知發送紀錄 |
| GET | /api/export | 匯出 CSV(?type=pain-points|report&min_severity=4) |
| GET | /api/export/quota | 本月匯出額度 |
| GET | /api/trend | 趨勢分析(?granularity=week|month&days=90&category=) |
| GET | /api/pro-docs | Pro 文件目錄 |
| GET | /api/pro-docs/:slug | 取得文件內容(?lang=zh) |
| GET | /api/max-docs | Max 專屬文件目錄 |
| GET | /api/max-docs/:slug | 取得 Max 文件內容(?lang=zh) |
| Method | Path | 說明 |
|---|---|---|
| POST | /api/projects | 從媒合建立專案(帶里程碑) |
| GET | /api/projects | 列出我的專案 |
| GET | /api/projects/:id | 專案詳情(含里程碑 + 留言) |
| PUT | /api/projects/:id | 更新專案狀態 |
| POST | /api/projects/:id/milestones | 新增里程碑 |
| PUT | /api/projects/:id/milestones/:mid | 更新里程碑狀態 |
| POST | /api/projects/:id/milestones/:mid/extend | 申請里程碑延期 |
| PUT | /api/projects/:id/milestones/:mid/extend | 審批里程碑延期 |
| POST | /api/projects/:id/messages | 專案留言 |
| Method | Path | 說明 |
|---|---|---|
| GET | /api/my-keys | 列出自己的 API Key |
| POST | /api/my-keys | 建立新 API Key(方案上限) |
| DELETE | /api/my-keys/:prefix | 刪除 API Key |
| POST | /api/support | 客服對話 · body: {message, locale?} |
| POST | /api/contact-admin | 聯絡管理員 · body: {subject, content} |
| GET | /api/timezone | 查詢租戶時區 |
| GET | /api/security-tier | 查詢安全等級 |
| POST | /api/matches/:id/accept | 方案方接受媒合 |
| 協定 | 端點 | 說明 |
|---|---|---|
| MCP | /mcp · /mcp/sse · /mcp/messages | Model Context Protocol — Streamable HTTP(建議)+ legacy SSE 相容 |
| A2A | /.well-known/agent.json · POST /a2a/tasks · GET /a2a/tasks · GET /a2a/tasks/:id · GET /a2a/tasks/:id/stream · POST /a2a/tasks/:id/cancel | Google A2A — 委派任務、查詢狀態、接收任務事件 |
| Free | Pro $17/mo | Max $168/mo | |
|---|---|---|---|
| Analyze quota | 15/mo | 50/day | 500/day |
| Benchmark | — | ✅ | ✅ |
| Solution slots | 1 | 6 | 20 |
| Match views/mo | 1 | 30 | Unlimited |
| History | 7 days | 90 days | 365 days |
| API Keys | 1 | 5 | 20 |
| Reports/Trends/Export | — | ✅ | ✅ |
| Webhook notifications | — | ✅ | ✅ |
| Active projects | 1 | 5 | Unlimited |
| API rate | 60/min | 120/min | 200/min |