Documentation Index
Fetch the complete documentation index at: https://docs.qoder.com/llms.txt
Use this file to discover all available pages before exploring further.
ファイル API を使うと、Session にファイルコンテキスト — コードリポジトリ、構成ファイル、参考ドキュメントなど — を提供できます。Agent はこれらのファイルを読み取って、タスクの背景を理解します。
基本フロー
ファイルをアップロード
POST /files — ファイルのバイナリをアップロードし、purpose を指定します。
Session にマウント
POST /sessions/{session_id}/resources — アップロード済みファイルを Session にマウントします。
Agent が利用
Session 実行中に Agent がファイル内容を読み取り、タスクを完了します。
ファイルをアップロードする
POST https://openapi.qoder.sh/api/v1/cloud/files
Content-Type: multipart/form-data
パラメータ
| フィールド | 型 | 必須 | 説明 |
|---|
file | binary | はい | ファイル内容 |
purpose | string | はい | ファイルの用途 (下表参照) |
filename | string | いいえ | カスタムファイル名 |
purpose フィールドの説明
| 値 | 意味 | 作成元 | ダウンロード可否 |
|---|
user_upload | ユーザーがアップロードする入力ファイル | ユーザー | 不可 |
tool_output | ツール実行で生成されたファイル | Agent/ツール | 可 |
skill_output | Skill 実行で生成されたファイル | Agent/Skill | 可 |
session_resource | Session レベルのリソースファイル | ユーザー/システム | 不可 |
agent_output | Agent の最終出力ファイル | Agent | 不可 |
tool_output と skill_output のみ /content エンドポイント経由でダウンロードできます。それ以外のタイプは Agent の内部利用のみです。
curl アップロードの例
curl -X POST https://openapi.qoder.sh/api/v1/cloud/files \
-H "Authorization: Bearer $QODER_PAT" \
-F "file=@./src/main.py" \
-F "purpose=user_upload"
レスポンス:
{
"file_id": "file_abc123",
"filename": "main.py",
"purpose": "user_upload",
"size_bytes": 4096,
"created_at": "2026-05-01T10:00:00Z"
}
複数ファイルのアップロード:
# 1 つずつアップロード
curl -X POST https://openapi.qoder.sh/api/v1/cloud/files \
-H "Authorization: Bearer $QODER_PAT" \
-F "file=@./config.yaml" \
-F "purpose=user_upload"
curl -X POST https://openapi.qoder.sh/api/v1/cloud/files \
-H "Authorization: Bearer $QODER_PAT" \
-F "file=@./requirements.txt" \
-F "purpose=user_upload"
Session にマウントする
アップロード後、Resources API でファイルを指定 Session にマウントします。
POST https://openapi.qoder.sh/api/v1/cloud/sessions/{session_id}/resources
リクエストボディ(resources 配列でラップし、1 リクエストで複数のリソースを一括マウント可能):
{
"resources": [
{
"type": "file",
"file_id": "file_abc123"
}
]
}
curl マウントの例
curl -X POST https://openapi.qoder.sh/api/v1/cloud/sessions/ses_abc123/resources \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{
"resources": [
{"type": "file", "file_id": "file_abc123"}
]
}'
複数ファイルを 1 リクエストで一括マウント:
curl -X POST https://openapi.qoder.sh/api/v1/cloud/sessions/ses_abc123/resources \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{
"resources": [
{"type": "file", "file_id": "file_abc123"},
{"type": "file", "file_id": "file_def456"},
{"type": "file", "file_id": "file_ghi789"}
]
}'
ファイルをダウンロードする
tool_output および skill_output タイプのファイルのみダウンロード可能です。
curl https://openapi.qoder.sh/api/v1/cloud/files/file_abc123/content \
-H "Authorization: Bearer $QODER_PAT" \
-o output.txt
それ以外のタイプで /content エンドポイントを呼び出すと 403 Forbidden を返します。
ファイル情報を確認
curl https://openapi.qoder.sh/api/v1/cloud/files/file_abc123 \
-H "Authorization: Bearer $QODER_PAT"
ファイルを一覧表示
curl "https://openapi.qoder.sh/api/v1/cloud/files?purpose=user_upload" \
-H "Authorization: Bearer $QODER_PAT"
purpose でのフィルタリングをサポートします。
ファイルサイズ制限
| 制限項目 | 値 |
|---|
| 単一ファイル最大 | 50 MB |
| Session ごとのマウントファイル合計 | 500 MB |
| 単一アップロードリクエストのタイムアウト | 120 秒 |
エンドツーエンドのワークフロー例
# 1. ソースコードをアップロード
FILE_ID=$(curl -s -X POST https://openapi.qoder.sh/api/v1/cloud/files \
-H "Authorization: Bearer $QODER_PAT" \
-F "file=@./app.py" \
-F "purpose=user_upload" | jq -r '.file_id')
echo "アップロード完了: $FILE_ID"
# 2. Session を作成
SESSION_ID=$(curl -s -X POST https://openapi.qoder.sh/api/v1/cloud/sessions \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{"agent_id": "agt_abc123"}' | jq -r '.id')
# 3. ファイルを Session にマウント
curl -X POST "https://openapi.qoder.sh/api/v1/cloud/sessions/$SESSION_ID/resources" \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d "{\"resources\": [{\"type\": \"file\", \"file_id\": \"$FILE_ID\"}]}"
# 4. タスクを送信 (Agent はマウント済みファイルを参照可能)
curl -X POST "https://openapi.qoder.sh/api/v1/cloud/sessions/$SESSION_ID/events" \
-H "Authorization: Bearer $QODER_PAT" \
-H "Content-Type: application/json" \
-d '{
"events": [
{"type": "user.message", "content": [{"type": "text", "text": "app.py をレビューしてバグを修正してください"}]}
]
}'
よくある質問
Q: アップロードしたファイルはどれくらい保存されますか? A: ファイルは所属するリソース (Agent/Session) のライフサイクルと一致します。Session が削除されると、関連ファイルもクリーンアップされます。
Q: Session 作成時にファイルを直接添付できますか? A: 現在は手順に分ける必要があります (アップロード → マウント)。後続バージョンでワンステップでの添付をサポートする可能性があります。
Q: なぜ user_upload タイプはダウンロードできないのですか? A: セキュリティ上、ユーザーがアップロードしたオリジナルファイルは Agent 内部利用のみとしています。結果のエクスポートが必要な場合、Agent は新たに tool_output または skill_output タイプとして出力します。
Q: どのファイル形式をサポートしますか? A: 形式制限はなく、任意のバイナリファイルをアップロード可能です。Agent はテキスト系ファイル (コード、構成、ドキュメント) の理解効果が最も高いです。