Lovely RouterДокументация
Получить ключ
Браузерный агент

Загрузка файлов

Загрузите файлы один раз, разрешите запуску их использовать, и агент прикрепит нужный файл к каждому полю загрузки.

Формы часто просят файл: резюме, скан удостоверения личности, счёт. Загрузите свои файлы в Lovely Router один раз. Если запуску разрешено их использовать, агент прикрепляет к каждому полю загрузки подходящий файл — к полю «Resume» ваше резюме, а не сопроводительное письмо, даже если оба в PDF.

Загрузка файла#

Отправьте байты файла как есть на 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

Или отправьте multipart-форму на POST /v1/browser/files, передав файл в поле file. Поля name (по умолчанию — имя загружаемого файла) и description необязательны:

cURL
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"

Оба способа возвращают сохранённый файл:

JSON
{
  "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; передавайте настоящий тип, чтобы его видели и агент, и сайт. Повторная загрузка под тем же именем заменяет файл и сохраняет его id. Файлы хранятся в зашифрованном виде, как и секреты из хранилища. Примеры на Python и Node.js используют настройку API, H и headers из раздела Запуск первой задачи.

ОграничениеЗначение
Размер файла10 МБ
Файлов на аккаунт100
ИмяОт 1 до 128 символов: буквы, цифры, пробелы и . _ - ( ) + ,, начинается с буквы, цифры или _
Описание300 символов (более длинный текст обрезается)

Как разрешить запуску использовать файлы#

Передайте files при старте запуска: список имён или id файлов либо "*" для всех ваших файлов.

cURL
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".

Как агент выбирает файл#

На каждом поле загрузки агент сравнивает ваши файлы с тем, что просит поле. Он смотрит на:

  • имя, тип, размер и описание каждого файла
  • подпись поля и типы файлов, которые оно принимает
  • вашу цель и содержимое страницы вокруг поля

Он подбирает документ по назначению, а не только по типу. Чтобы помочь ему:

  • Используйте понятные имена. Maria_Garcia_CV_2026.pdf лучше, чем scan_0412.pdf.
  • Добавьте описание, если имя не говорит всего: «Резюме, обновлено в 2026», «Страница паспорта с фото».
  • Укажите в цели, какой файл использовать, если это важно: «Прикрепи её резюме (не сопроводительное письмо)».
  • Передавайте только нужные запуску файлы, а не "*", если у вас много похожих файлов.

Список и удаление файлов#

cURL
# 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": [...]} с объектом файла для каждого файла. last_used_at показывает, когда файл в последний раз прикреплял запуск. Удаление возвращает {"deleted": "<name or id>"} или 404 с No such file. Загружать и удалять файлы можно также в консоли, в разделе «Секреты и файлы».

Ошибки#

СтатусСообщениеПричина
400File names are 1-128 chars: letters, digits, space . _ - ( ) + ,В имени есть другие символы или оно слишком длинное.
400Empty fileВ теле нет ни одного байта.
400Send multipart/form-data with a "file" field (and optional "description", "name")В multipart-форме нет поля file.
409file limit reached (100); delete some firstУ вас уже 100 файлов. Замена файла с существующим именем по-прежнему работает.
413Files are limited to 10 MBФайл больше 10 МБ.