Web Fetch (Получение контента по URL)
Дайте любой модели возможность получать содержимое веб-страниц и PDF-документов по URL.
Инструмент openrouter:web_fetch позволяет модели получать содержимое конкретного URL. Когда модели нужно прочитать веб-страницу или PDF-документ, она вызывает инструмент с URL. Содержимое извлекается и возвращается в виде текста, который модель использует в своём ответе.
Базовый URL: https://api.ru-openrouter.ru/v1/chat/completions
Как это работает
- Вы включаете инструмент
{ "type": "openrouter:web_fetch" }в массивtoolsзапроса. - Модель, исходя из промпта, решает, нужно ли ей получить содержимое URL, и формирует запрос.
- URL загружается через настроенный движок (по умолчанию
auto— используется нативный fetch провайдера, если он доступен, иначе — Exa). - Содержимое страницы (текст, заголовок и URL) возвращается модели.
- Модель использует полученное содержимое в своём ответе. При необходимости она может получить несколько URL в рамках одного запроса.
Быстрый старт
curl https://api.ru-openrouter.ru/v1/chat/completions \
-H "Authorization: Bearer sk_ваш_api_ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.2",
"messages": [
{
"role": "user",
"content": "Кратко изложи содержимое https://example.com/article"
}
],
"tools": [
{ "type": "openrouter:web_fetch" }
]
}'
import requests
response = requests.post(
"https://api.ru-openrouter.ru/v1/chat/completions",
headers={
"Authorization": "Bearer sk_ваш_api_ключ",
"Content-Type": "application/json",
},
json={
"model": "openai/gpt-5.2",
"messages": [
{
"role": "user",
"content": "Кратко изложи содержимое https://example.com/article"
}
],
"tools": [
{"type": "openrouter:web_fetch"}
]
}
)
data = response.json()
print(data["choices"][0]["message"]["content"])
Конфигурация
Инструмент web fetch принимает необязательные parameters для настройки поведения:
{
"type": "openrouter:web_fetch",
"parameters": {
"engine": "exa",
"max_uses": 10,
"max_content_tokens": 100000,
"allowed_domains": ["docs.example.com"],
"blocked_domains": ["private.example.com"]
}
}
| Параметр | Тип | По умолчанию | Описание |
|---|---|---|---|
engine |
string | auto |
Движок загрузки: auto, native, exa, openrouter, firecrawl или parallel |
max_uses |
integer | — | Максимальное число загрузок за один запрос. При превышении лимита инструмент возвращает ошибку |
max_content_tokens |
integer | — | Максимальная длина содержимого в приблизительных токенах. Содержимое сверх лимита обрезается |
allowed_domains |
string[] | — | Загружать только с этих доменов |
blocked_domains |
string[] | — | Никогда не загружать с этих доменов |
Выбор движка
Инструмент web fetch поддерживает несколько движков загрузки:
auto(по умолчанию) — использует нативный fetch, если провайдер его поддерживает, иначе переключается на Exanative— принудительно использует встроенный fetch провайдераexa— извлечение содержимого страницы через Exa Contents APIopenrouter— прямой HTTP-fetch с извлечением содержимогоfirecrawl— скрейпинг через Firecrawl (BYOK — ваш собственный ключ)parallel— высококачественное извлечение содержимого через Parallel
Возможности движков
| Возможность | Exa | Parallel | Firecrawl | OpenRouter | Native |
|---|---|---|---|---|---|
| Фильтрация доменов | Да | Да | Да | Да | Зависит от провайдера |
| Обрезка по токенам | Да | Да | Да | Да | Нет |
| API-ключ | Серверный или BYOK | Серверный | BYOK (ваш ключ) | Серверный | Обрабатывается провайдером |
| Жёсткий лимит | Нет | Нет | Нет | 50/запрос | 50/запрос |
Firecrawl (BYOK)
Firecrawl использует ваш собственный API-ключ. Чтобы настроить его, укажите ключ Firecrawl в настройках плагинов. Ваш аккаунт Firecrawl тарифицируется отдельно.
Жёсткие лимиты
Для предотвращения неконтролируемых расходов:
- Движок Exa — без жёсткого лимита (тарификация через API-кредиты)
- Движок Parallel — без жёсткого лимита (тарификация через API-кредиты)
- Движок Firecrawl — без жёсткого лимита (использует ваши кредиты Firecrawl)
- Движки OpenRouter/native — жёсткий лимит 50 загрузок на запрос
Доменная фильтрация
Ограничьте домены, с которых можно загружать, с помощью allowed_domains и blocked_domains:
{
"type": "openrouter:web_fetch",
"parameters": {
"allowed_domains": ["docs.example.com", "api.example.com"],
"blocked_domains": ["internal.example.com"]
}
}
Если задан allowed_domains, загружаются только URL с этих доменов. Если задан blocked_domains, URL с этих доменов отклоняются.
Обрезка содержимого
Используйте max_content_tokens, чтобы ограничить объём возвращаемого содержимого:
{
"type": "openrouter:web_fetch",
"parameters": {
"max_content_tokens": 50000
}
}
Содержимое сверх лимита обрезается. Это удобно для контроля размера контекстного окна при загрузке больших страниц.
Работа с Responses API
Инструмент web fetch также работает с эндпоинтом /v1/responses:
curl https://api.ru-openrouter.ru/v1/responses \
-H "Authorization: Bearer sk_ваш_api_ключ" \
-H "Content-Type: application/json" \
-d '{
"model": "openai/gpt-5.2",
"input": "Что написано в документации по адресу https://example.com/docs?",
"tools": [
{ "type": "openrouter:web_fetch", "parameters": { "max_content_tokens": 50000 } }
]
}'
import requests
response = requests.post(
"https://api.ru-openrouter.ru/v1/responses",
headers={
"Authorization": "Bearer sk_ваш_api_ключ",
"Content-Type": "application/json",
},
json={
"model": "openai/gpt-5.2",
"input": "Что написано в документации по адресу https://example.com/docs?",
"tools": [
{"type": "openrouter:web_fetch", "parameters": {"max_content_tokens": 50000}}
]
}
)
print(response.json())
Формат ответа
Когда модель вызывает инструмент web fetch, она получает ответ вида:
{
"url": "https://example.com/article",
"title": "Article Title",
"content": "Полный текстовый контент страницы...",
"status": "completed",
"retrieved_at": "2025-07-15T14:30:00.000Z"
}
Если загрузка не удалась, ответ содержит ошибку:
{
"url": "https://example.com/404",
"status": "failed",
"error": "HTTP 404: Page not found"
}
Цена
Веб-fetch тарифицируется отдельно от обычных токенов. Стоимость за загрузку зависит от выбранного движка и добавляется к стандартной стоимости токенов за обработку полученного содержимого.