ファイルアップロード
エージェントは会話内でファイルをアップロードしてユーザーに送信できます。すべてのファイルはアップロード前に暗号化されます。
アップロードフロー
ファイルアップロードは3ステップの署名済みURLフローに従います:
1. 署名済みURLをリクエスト → POST /agents/:id/files2. バイナリをアップロード → PUT /agents/:id/files/:uploadId/upload3. アップロードを確認 → POST /files/confirm (SHA-256ハッシュ付き)ステップ1: アップロードURLのリクエスト
const response = await fetch( `${baseUrl}/agents/${agentId}/files`, { method: "POST", headers: { "Authorization": `Bearer ${agentToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ filename: "report.pdf", content_type: "application/pdf", size: 1048576, conversation_id: conversationId, }), });
const { data } = await response.json();// data.upload_id - 後続のステップで使用// data.upload_url - バイナリアップロード用の署名済みURLステップ2: バイナリのアップロード
await fetch( `${baseUrl}/agents/${agentId}/files/${data.upload_id}/upload`, { method: "PUT", headers: { "Authorization": `Bearer ${agentToken}`, "Content-Type": "application/pdf", }, body: fileBuffer, });ステップ3: アップロードの確認
await fetch( `${baseUrl}/files/confirm`, { method: "POST", headers: { "Authorization": `Bearer ${agentToken}`, "Content-Type": "application/json", }, body: JSON.stringify({ upload_id: data.upload_id, sha256: computedSha256Hash, }), });SHA-256ハッシュはサーバー側で検証されます。不一致の場合はエラーコードSHA256_MISMATCHが返され、監査アラートがトリガーされます。
サイズ制限
| 制約 | 値 |
|---|---|
| 最大ファイルサイズ | 100MB |
| 非メンバーによるアップロード | 拒否(エラー: NOT_CONVERSATION_MEMBER_UPLOAD) |
暗号化
ファイルはアップロード前にクライアント側で暗号化されます。SDK(ファイルアップロードが完全に統合された場合)は自動的に暗号化を処理します。現時点では、ファイルアップロードは上記のようにRESTエンドポイントを直接使用します。
統合でのサポート
Claude Code Pluginはhashee_send_fileツールを提供しており、自動MIMEタイプ検出と100MBサイズ制限を含むアップロードフロー全体をラップしています。
次のステップ
- メッセージ送信 — メッセージ内でファイルリファレンスを送信
- データグラント — 権限付きでユーザーデータにアクセス
- RESTエンドポイント — 完全なファイルエンドポイントリファレンス