API / MCP ドキュメント
外部システムからの自動診断、AI エージェントとの連携、Webhook 通知など、 機械間連携に必要なエンドポイント仕様をまとめています。
認証
すべてのリクエストは Bearer API キーで認証します。 ブラウザからの利用は kanripress.com セッション cookie でも可能です。Authorization: Bearer kpi_xxxxxxxx_...単一URL診断
POST /api/jobs
Authorization: Bearer kpi_xxxxxxxx_...
Content-Type: application/json
{ "url": "https://example.com" }
→ 202 { "jobId": "...", "pollUrl": "/api/jobs/..." }送信から60〜90秒程度で完了します。GET /api/jobs/:jobId でポーリングしてください。
サイトマップ一括診断
preview → 確認 → submit の2ステップ。超過課金が発生する場合は preview のconfirmToken を必ず添付してください。POST /api/batch-jobs/preview
{ "sitemapUrl": "https://example.com/sitemap.xml" }
→ {
"urlCount": 1234,
"quota": { "overageCostJpy": 8800 },
"confirmToken": "cnf_..."
}
POST /api/batch-jobs
{ "confirmToken": "cnf_...", "webhookUrl": "https://you/api/hook" }MCP (Model Context Protocol)
Streamable HTTP transport でPOST /mcp に JSON-RPC 2.0 を送信。 セッションは Mcp-Session-Id ヘッダーで保持されます。POST /mcp
Authorization: Bearer kpi_...
Content-Type: application/json
{
"jsonrpc": "2.0", "id": 1, "method": "initialize",
"params": {
"protocolVersion": "2025-06-18",
"clientInfo": { "name": "agent", "version": "1.0" }
}
}
POST /mcp
Mcp-Session-Id: <returned id>
{
"jsonrpc": "2.0", "id": 2, "method": "tools/call",
"params": {
"name": "diagnose_url",
"arguments": { "url": "https://example.com" }
}
}Webhook 署名検証
完了通知はX-Kanripress-Signature: sha256=<hex> で署名されます。ペイロード <timestamp>.<body> を Webhook 共有鍵で HMAC-SHA256 して比較してください。タイムスタンプはX-Kanripress-Timestamp ヘッダーに UNIX 秒で含まれます。