ファイルアップロード
ファイルを一度アップロードして実行で使えるようにすると、エージェントが各アップロード欄に適切なファイルを添付します。
フォームではよくファイルを求められます。履歴書、身分証明書のスキャン、請求書などです。ファイルは Lovely Router に一度アップロードするだけです。実行でファイルを使えるようにすると、エージェントは各アップロード欄に合ったファイルを添付します。どちらも PDF であっても、「Resume」欄にはカバーレターではなく CV を添付します。
ファイルをアップロードする#
PUT /v1/browser/files/{name} に生のバイト列を送り、ファイルの種類を Content-Type に指定します。任意の description クエリパラメータを付けると、エージェントがファイルを選びやすくなります。
curl -X PUT "https://lovelyrouter.com/v1/browser/files/Maria_Garcia_CV_2026.pdf?description=Resume%2C%20updated%202026" \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/pdf" \
--data-binary @Maria_Garcia_CV_2026.pdfまたは、POST /v1/browser/files にマルチパートフォームを送り、ファイルを file フィールドに入れます。name(デフォルトはアップロードしたファイルの名前)と description は任意のフィールドです。
curl https://lovelyrouter.com/v1/browser/files \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-F "file=@Maria_Garcia_CV_2026.pdf;type=application/pdf" \
-F "description=Resume, updated 2026"どちらも保存されたファイルを返します。
{
"id": "file_7a3c9e1b5d2f8a4c6e0b",
"name": "Maria_Garcia_CV_2026.pdf",
"mime": "application/pdf",
"bytes": 84213,
"sha256": "5f2b8c…",
"description": "Resume, updated 2026",
"created_at": "2026-10-11T09:20:44.000Z",
"last_used_at": null
}Content-Type がない場合、ファイルは application/octet-stream として保存されます。エージェントと Web サイトが正しく認識できるよう、実際の種類を送ってください。同じ名前で再度アップロードするとファイルが置き換えられ、id はそのまま保たれます。ファイルはボールトシークレットと同様に、保存時に暗号化されます。Python と Node.js のサンプルは、最初のタスクを実行するで定義した API、H、headers を使います。
| 制限 | 値 |
|---|---|
| ファイルサイズ | 10 MB |
| アカウントあたりのファイル数 | 100 |
| 名前 | 1〜128 文字。使える文字は英字、数字、スペース、. _ - ( ) + , で、先頭は英字、数字、_ のいずれか |
| 説明 | 300 文字(超えた分は切り捨て) |
実行でファイルを使えるようにする#
実行の開始時に files を渡します。ファイル名か ID のリスト、またはすべてのファイルを表す "*" を指定します。
curl https://lovelyrouter.com/v1/browser/runs \
-H "Authorization: Bearer $LOVELY_API_KEY" \
-H "content-type: application/json" \
-d '{
"goal": "Apply for the Backend Engineer role as Maria Garcia (maria.garcia@example.com), based in Portland, Oregon. Attach her resume. Submit the application and tell me the application ID.",
"start_url": "https://jobs.example.com/backend-engineer/apply",
"files": ["Maria_Garcia_CV_2026.pdf", "Maria_Garcia_Cover_Letter.pdf"],
"max_steps": 40
}'エージェントがファイルを添付できるのは files を渡した実行だけで、それも指定したファイルに限られます。存在しない名前を指定すると、400 と Unknown file(s): CV.pdf. Upload with PUT /v1/browser/files/{name}. が返ります。
トレースでは、アップロードのステップの action は upload: で始まり、description に入力欄の名前が示されます。送信前に実行が承認待ちで一時停止した場合は、needs.fields にどのファイルが添付されたかが表示されます。例:Resume: file "Maria_Garcia_CV_2026.pdf"。
エージェントがファイルを選ぶ仕組み#
エージェントは各アップロード欄で、あなたのファイルとその欄が求めているものを比較します。参照するのは次の情報です。
- 各ファイルの名前、種類、サイズ、説明
- 入力欄のラベルと、受け付けるファイルの種類
- あなたのゴールと、入力欄の周辺のページ内容
ファイルの種類だけでなく、書類の目的で照合します。より確実に選ばせるには:
- わかりやすい名前を付ける。
scan_0412.pdfよりMaria_Garcia_CV_2026.pdfのほうが確実です。 - 名前だけで伝えきれない場合は説明を付ける。 「履歴書、2026 年更新」「パスポートの顔写真ページ」など。
- 重要な場合は、どのファイルを使うかをゴールに書く。 「履歴書を添付して(カバーレターではなく)」。
- 似たファイルが多い場合は、
"*"ではなく実行に必要なファイルだけを渡す。
ファイルの一覧表示と削除#
# List your files, sorted by name
curl https://lovelyrouter.com/v1/browser/files -H "Authorization: Bearer $LOVELY_API_KEY"
# Delete by name or id
curl -X DELETE "https://lovelyrouter.com/v1/browser/files/Maria_Garcia_CV_2026.pdf" -H "Authorization: Bearer $LOVELY_API_KEY"一覧は {"object": "list", "data": [...]} の形で返り、ファイルごとに 1 つのファイルオブジェクトが含まれます。last_used_at は、最後に実行でそのファイルが添付された日時です。削除すると {"deleted": "<name or id>"} が返り、ファイルがない場合は 404 と No such file が返ります。コンソールの シークレットとファイル でも、ファイルのアップロードと削除ができます。
エラー#
| ステータス | メッセージ | 原因 |
|---|---|---|
400 | File names are 1-128 chars: letters, digits, space . _ - ( ) + , | 名前に使えない文字が含まれているか、長すぎます。 |
400 | Empty file | ボディが空です。 |
400 | Send multipart/form-data with a "file" field (and optional "description", "name") | マルチパートフォームに file フィールドがありません。 |
409 | file limit reached (100); delete some first | すでに 100 個のファイルがあります。既存の名前での置き換えは引き続き可能です。 |
413 | Files are limited to 10 MB | ファイルが 10 MB を超えています。 |