API リファレンス

認証

テナント、エンドユーザー、プロキシモードでの API アクセスに使うヘッダー方式。

資格情報の種類

方式ヘッダー主体(Acts as)
テナント API keyX-API-Key: tk_…(または Authorization: Bearer tk_…あなたのテナント
プロキシモードのエンドユーザーX-API-Key: tk_… + X-End-User: <your-user-id>あなたのバックエンドが表明した特定のエンドユーザー
プラットフォームのエンドユーザーAuthorization: Bearer <jwt>/auth/login または OAuth 経由でサインインしたエンドユーザー

オプションの X-Space-Id ヘッダーで特定のスペースを選択できます。指定しない場合はユーザーのデフォルトスペースが使われます。

どの方式であっても、それは principal(tenant · user · space)に解決され、データベースセッションはそのアイデンティティに Postgres の行レベルセキュリティ(RLS)でスコープされます。したがって分離は API より下層で強制され、アプリケーションコードによるものではありません。

どれを使うべきか?

  • サーバー間連携(あなたの製品が会話を駆動する場合): プロキシモードを使います。バックエンドがテナントキーを保持し、リクエストごとにエンドユーザーのアイデンティティを表明します。ユーザーがキーを見ることはありません。
  • ユーザーがプラットフォームに直接ログインする自社クライアントアプリ: エンドユーザー JWT を使います。
  • 管理系の自動化(ドキュメント、エージェント、使用量の管理): 管理エンドポイントに対して素の テナントキーを使います。

テナント API key はサーバーサイドのシークレットです。ブラウザコードやモバイルアプリに絶対に組み込まないでください。ブラウザ向けには、共有トークン(share token)で認証する埋め込みウィジェットを使ってください。

プロキシモードの例

curl https://chat.agent4.io/chat \
  -H "X-API-Key: tk_live_…" \
  -H "X-End-User: crm-user-8841" \
  -H "Content-Type: application/json" \
  -d '{ "message": "What documents do I need for a refinance?" }'

エンドユーザー id は、あなたのシステム上の任意の安定した識別子です。プラットフォームは初回検出時にユーザーとそのデフォルトスペースを作成し、すべての履歴・メモリ・ドキュメントをそのユーザーにスコープします。

エラー

ステータス意味
401資格情報が欠落しているか無効
403アイデンティティは有効だが、要求されたスペース/エージェントへのアクセス権がない
429月間トークンクォータを使い切った