メインコンテンツへスキップ

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 はこれらのファイルを読み取って、タスクの背景を理解します。

基本フロー

1

ファイルをアップロード

POST /files — ファイルのバイナリをアップロードし、purpose を指定します。
2

Session にマウント

POST /sessions/{session_id}/resources — アップロード済みファイルを Session にマウントします。
3

Agent が利用

Session 実行中に Agent がファイル内容を読み取り、タスクを完了します。

ファイルをアップロードする

POST https://openapi.qoder.sh/api/v1/cloud/files
Content-Type: multipart/form-data

パラメータ

フィールド必須説明
filebinaryはいファイル内容
purposestringはいファイルの用途 (下表参照)
filenamestringいいえカスタムファイル名

purpose フィールドの説明

意味作成元ダウンロード可否
user_uploadユーザーがアップロードする入力ファイルユーザー不可
tool_outputツール実行で生成されたファイルAgent/ツール
skill_outputSkill 実行で生成されたファイルAgent/Skill
session_resourceSession レベルのリソースファイルユーザー/システム不可
agent_outputAgent の最終出力ファイルAgent不可
tool_outputskill_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 はテキスト系ファイル (コード、構成、ドキュメント) の理解効果が最も高いです。