Janus 提供 HTTP REST 与 gRPC API。所有 SDK 都通过这些端点通信。
http://localhost:8080
所有请求都需要 X-Tenant-ID 请求头。需要认证的端点还要求 Authorization: Bearer <api_key> 请求头。
{ "id": "review-mb", "agent_id": "reviewer", "ack_wait_seconds": 300, "max_deliver": 5 }{ "id", "display_name", "team", "protocol", "capabilities": [{ "capability", "description" }] }。v1.1.0 起能力原子化持久化。JANUS_HB_TTL 控制)。{ "id", "source_agent", "target_type", "target_value", "envelope" }。响应:{ "id", "status", "task": {...} } — v1.1.0 起包含完整 task 对象。{ "agent_id": "reviewer" }{ "lease_id": "..." }{ "lease_id": "...", "result_ref": "..." }{ "lease_id": "...", "reason": "..." }target_type: "intent" 和自然语言 target_value 发布任务。Janus 在派发前将其解析为最匹配的能力(配置了 JANUS_LLM_ENABLED 时用 LLM,否则降级关键词匹配)。没有单独的 resolve 端点。所有错误都返回标准信封:
{
"error": {
"code": "TENANT_MISMATCH",
"message": "Cross-tenant access denied",
"details": {
"request_tenant": "acme",
"resource_tenant": "evil-corp"
}
}
}
| HTTP 状态 | 错误码 | 描述 |
|---|---|---|
| 400 | INVALID_REQUEST | 请求体格式错误 |
| 401 | UNAUTHENTICATED | 缺少或无效的 API 密钥 |
| 403 | TENANT_MISMATCH | 跨租户访问被拒绝 |
| 403 | POLICY_DENIED | 治理策略阻止了该操作 |
| 404 | NOT_FOUND | 资源不存在 |
| 409 | LEASE_EXPIRED | 任务租约已过期,需要重新拉取 |
| 429 | RATE_LIMITED | 超出预算或并发限制 |
| 500 | INTERNAL | 服务器错误 |
Janus 支持两种认证模式:
Authorization: Bearer <key> 请求头传递API 密钥按租户作用域划分。通过 CLI 创建与撤销密钥:
janus api-key create --tenant acme
janus api-key revoke --tenant acme --key-id <id>