API リファレンス
POST /feedback
CLI / Codex / Claude Code から feedback inbox へ要望や不具合を送る 入出力 です。
このページの内容10項目
POST /api/signal-foundry/feedback は、要望・不具合・ドキュメント 改善を Signal Foundry 側の feedback inbox に送る endpoint です。
ユーザーに Canny 画面を直接触らせるのではなく、Web / CLI / Codex / Claude Code から要約済み feedback を送ります。raw transcript、API key、顧客秘密情報、非公開 URL は送らないでください。
契約サマリー
| Field | Value |
|---|---|
| Method | POST |
| Path | /api/signal-foundry/feedback |
| Auth | production は API key 必須 |
| Usage | request usage / rate limit 対象 |
| Credit | 消費しない |
| CLI | sf feedback create "<title>" --details "<summary>" --source codex --json |
この エンドポイントの役割 は、明示された feedback を 1 件だけ作ることです。エージェントが憶測で feedback を増やしたり、会話全体を raw に送ったりしないでください。
リクエスト
HTTP
curl "https://signal-foundry.app/api/signal-foundry/feedback" \
-H "Authorization: Bearer <SIGNAL_FOUNDRY_API_KEY>" \
-H "Content-Type: application/json" \
-d '{
"title": "Company Card にメモを付けたい",
"details": "Codex から使っていて、list row ごとに短いメモを残したいです。",
"kind": "feature",
"source": "codex",
"surface": "list.workspace"
}'
CLI
sf feedback create "Company Card にメモを付けたい" \ --details "Codex から使っていて、list row ごとに短いメモを残したいです。" \ --source codex \ --surface list.workspace \ --json
リクエストボディ
| Field | Required | Notes |
|---|---|---|
title | Yes | 3..120 chars。1 feedback = 1 request に絞る |
details | Yes | 10..5000 chars。要約済み内容だけを書く |
kind | No | feature bug docs other。default feature |
source | No | cli codex claude web other。default cli |
surface | No | company.search, auth.login など |
errorCode | No | 関連する error.code |
version | No | CLI / client version |
CLI の --error-code や --details-file は CLI 側で errorCode / details に変換します。
レスポンス
見る key:
okcommandstatusrequest_idaccount_idapi_usage_event_idfeedback.kindfeedback.sourcefeedback.surfacefeedback.inbox_idfeedback.post_idfeedback.board_idfeedback.portal_url
例
{
"ok": true,
"command": "feedback.create",
"mode": "execute",
"status": "created",
"request_id": "req_1234567890abcdef",
"account_id": "00000000-0000-4000-8000-000000000000",
"auth_mode": "api_key",
"api_usage_event_id": "usage_123",
"feedback": {
"kind": "feature",
"source": "codex",
"surface": "list.workspace",
"inbox_id": "00000000-0000-4000-8000-000000000000",
"post_id": "canny_post_123",
"board_id": "canny_board_123",
"portal_url": "https://feedback.example.com"
}
}
外部 feedback provider が未設定または一時障害の場合も、API は 202 / status: "queued" を返し、feedback.inbox_id に durable inbox の ID を返します。この場合 post_id / board_id / portal_url は null です。
エラー
| Code | Status | 復旧 |
|---|---|---|
authentication_required | 401 | CLI なら sf login に戻る。直接 API なら OAuth bearer token または service 認証情報 を付ける |
invalid_request | 400 | title / details の長さ、kind、source を schema に合わせる |
account_scope_conflict | 400 | API key 利用時は accountId を送らない |
feedback_inbox_write_failed | 500 | durable inbox への保存に失敗。重複投稿を避けるため再送前に support に連絡する |
復旧方法
Canny 側が未設定または一時エラーの場合も feedback は durable inbox に保存されます。CLI / エージェントに外部サービスの key を保存しないでください。
含めないもの
- raw transcript の保存
- API key / customer secret の保存
- Canny board の管理
- feedback から issue / roadmap への自動昇格