Documentation Index
Fetch the complete documentation index at: https://docs.fim.ai/llms.txt
Use this file to discover all available pages before exploring further.
FIM One API は 2 つの認証方法をサポートしています:
- API キー — サービス間統合用のシンプルで長期有効なトークン
- JWT トークン — ユーザーログインからの短期有効なトークン (SSE エンドポイント用)
ほとんどの統合では API キー を使用する必要があります。
APIキー
APIキーはユーザーアカウントに紐付けられた長期間有効な認証情報です。以下の用途に最適です:
- サーバー間統合
- スケジュール済みスクリプトと自動化
- FIM Oneにアクセスする外部アプリケーション
APIキーの作成
- FIM Oneポータルにログインします
- 設定 → APIキーに移動します
- APIキーを作成をクリックします
- 名前を入力します(例:「本番環境統合」)
- (オプション)スコープを設定してアクセスを制限します
- (オプション)有効期限を設定します
- 作成をクリックします
- キーをすぐにコピーしてください — 1回だけ表示されます
完全なキーは次のようになります:fim_your44characterkeystringhere(fim_プレフィックスで始まります)
APIキーの使用
AuthorizationヘッダーにBearer tokenとしてキーを含めます:
curl -H "Authorization: Bearer fim_your_api_key_here" \
https://your-domain.com/api/conversations
またはPythonの場合:
import requests
headers = {
"Authorization": "Bearer fim_your_api_key_here"
}
response = requests.get(
"https://your-domain.com/api/conversations",
headers=headers
)
print(response.json())
APIキーの機能
可視性: 各キーには以下が表示されます:
- キープレフィックス (識別用の最初の8文字)
- 作成日
- 最後に使用されたタイムスタンプ
- 総リクエスト数
- アクティブステータス
- 有効期限 (設定されている場合)
管理: 以下のことができます:
- キーを削除せずに有効/無効にする
- 自動有効期限を設定する
- キーを完全に削除する
- 使用パターンを追跡する
スコープ
スコープはAPIキーがアクセスできる内容を制限します。スコープが設定されていない場合、キーはフルアクセス権を持ちます。
利用可能なスコープ:
| スコープ | 許可される操作 |
|---|
chat | POST /api/react, POST /api/dag, POST /api/chat/inject |
agents | GET /api/agents, GET /api/agents/{id} |
kb | GET /api/knowledge-bases, POST /api/knowledge-bases/{id}/retrieve |
connectors | コネクタCRUD (connector_specific endpoints) |
admin | 管理エンドポイント |
スコープ付きのキーを作成:
curl -X POST https://your-domain.com/api/me/api-keys \
-H "Authorization: Bearer your_current_api_key_or_jwt" \
-H "Content-Type: application/json" \
-d '{
"name": "Chat-only Integration",
"scopes": "chat"
}'
JWTトークン
JWTトークンは短命で、ログイン時に発行されます。以下の用途に使用されます:
- SSEストリーミングエンドポイント:
/api/reactと/api/dagのリクエストボディにトークンを渡す
- ポータルセッション: フロントエンド認証
JWTトークンの取得
JWTトークンはWebポータルを通じてログインするか、認証エンドポイントを呼び出すと自動的に発行されます:
curl -X POST https://your-domain.com/api/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "your_password"
}'
レスポンス:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"token_type": "bearer",
"expires_in": 7200,
"user": { ... }
}
ストリーミング用のJWTの使用
SSEエンドポイントの場合、リクエストボディにトークンを含めます:
curl -X POST https://your-domain.com/api/react \
-H "Content-Type: application/json" \
-d '{
"q": "What are the top 3 Python frameworks?",
"token": "your_jwt_token_here"
}'
またはJavaScriptからfetchを使用して読み取り可能なストリーム(エンドポイントはPOSTのみであるため、GETのみをサポートするネイティブEventSourceは使用できません):
const response = await fetch("https://your-domain.com/api/react", {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify({
q: "Hello",
token: "fim_your_api_key_here"
})
});
const reader = response.body.getReader();
const decoder = new TextDecoder();
while (true) {
const { done, value } = await reader.read();
if (done) break;
const chunk = decoder.decode(value);
// Parse SSE events from chunk
console.log(chunk);
}
トークンリフレッシュ
アクセストークンは2時間後に期限切れになります。リフレッシュトークンを使用して、再度ログインせずに新しいアクセストークンを取得します:
curl -X POST https://your-domain.com/api/auth/refresh \
-H "Content-Type: application/json" \
-d '{
"refresh_token": "your_refresh_token_here"
}'
セキュリティのベストプラクティス
APIキー
APIキーをバージョン管理にコミットしないでください。 これらはデータへの完全なアクセスを提供します。
-
環境変数に保存する:
export FIM_API_KEY="fim_your_api_key_here"
その後、コードで参照します:
api_key = os.environ.get("FIM_API_KEY")
-
キーローテーションを使用する:
- 新しいキーを作成する
- アプリケーションを更新する
- 古いキーを削除する
- 四半期ごとに繰り返す
-
有効期限を設定する:
- 一時的な統合には短期間のキーを使用する
- 定期的に再認証を要求する
-
スコープ付きキーを使用する:
- 必要な場合を除き、「フルアクセス」キーを使用しない
- 異なるサービス用に個別のキーを作成する
- キーが侵害された場合のダメージを制限する
-
使用状況を監視する:
- 「最後に使用された」タイムスタンプを確認する
- リクエスト数を確認する
- 未使用のキーを削除する
JWTトークン
- 短命に保つ: アクセストークンは2時間後に期限切れになります
- 安全な保存:
- ブラウザ内: HttpOnlyクッキーを使用(localStorageより安全)
- サーバー内: 安全なセッションストレージを使用
- ログに公開しない: トークンのプレフィックスのみをログに記録し、完全なトークンは記録しないでください
- HTTPSのみを使用: 暗号化されていない接続でトークンを送信しないでください
レート制限
キーごとのレート制限は将来のリリースで予定されています。現在のところ、キーごとのリクエスト制限は実施されていません。
トラブルシューティング
無効なトークンエラー
{
"error": "invalid_token",
"message": "The provided token is invalid or expired"
}
原因:
- APIキープレフィックスが間違っている(
fim_で始まる必要があります)
- JWTトークンの有効期限が切れている(更新してください)
- トークンが不正な形式または破損している
- APIキーが削除されている
解決策: トークン形式を確認し、必要に応じて再生成してください
認可されていないエラー
{
"error": "unauthorized",
"message": "Authentication required"
}
原因:
- Authorization ヘッダーが提供されていない
- リクエストボディにトークンがない(SSE エンドポイントの場合)
- API キーが無効になっている
解決策: すべてのリクエストに有効なトークンを含める
Forbidden エラー
{
"error": "forbidden",
"message": "Your API key does not have permission to access this resource"
}
原因:
- API キーがスコープ付きアクセスを持っており、必要なスコープが不足している
- ユーザーアカウントが制限されたアクセス権限を持っている
解決策: 適切なスコープを持つキーを使用するか、キーの権限を増やしてください
有効期限切れのトークン
{
"error": "token_expired",
"message": "Your token has expired. Please refresh your authentication."
}
解決策: リフレッシュトークンを使用して新しいアクセストークンを取得します:
curl -X POST https://your-domain.com/api/auth/refresh \
-d '{"refresh_token": "your_refresh_token"}'
環境変数のセットアップ
Python
import os
from dotenv import load_dotenv
import requests
# Load from .env file
load_dotenv()
api_key = os.getenv("FIM_API_KEY")
base_url = os.getenv("FIM_API_BASE_URL", "https://your-domain.com/api")
headers = {"Authorization": f"Bearer {api_key}"}
# Now use in requests
response = requests.get(f"{base_url}/agents", headers=headers)
Node.js
const api_key = process.env.FIM_API_KEY;
const base_url = process.env.FIM_API_BASE_URL || "https://your-domain.com/api";
const headers = {
"Authorization": `Bearer ${api_key}`,
"Content-Type": "application/json"
};
// Use in fetch
const response = await fetch(`${base_url}/agents`, {
headers: headers
});
Bash
#!/bin/bash
FIM_API_KEY="${FIM_API_KEY:-$(cat ~/.fim_api_key)}"
FIM_API_BASE_URL="${FIM_API_BASE_URL:-https://your-domain.com/api}"
curl -H "Authorization: Bearer $FIM_API_KEY" \
"$FIM_API_BASE_URL/agents"
サポート
認証の問題については:
- レスポンス形式の詳細についてはAPI概要を確認してください
GET /api/auth/verifyでトークンの有効期限を確認してください
- キーが侵害されたと思われる場合はサポートにお問い合わせください