Web Fetch
Donnez au modèle le texte intégral d'une page dont vous avez déjà l'URL. Ajoutez une entrée d'outil et Synthorai récupère la page, la nettoie et met le corps lisible dans la conversation — sur n'importe quel modèle, par n'importe quel canal.
Requête minimale
Ajoutez synthorai:web_fetch à tools sur /v1/messages. Rien d'autre ne change :
curl https://synthorai.io/v1/messages \
-H "x-api-key: $YOUR_KEY" \
-H "content-type: application/json" \
-d '{
"model": "claude-sonnet-4-6",
"max_tokens": 1024,
"tools": [{"type": "synthorai:web_fetch"}],
"messages": [
{"role": "user", "content": "Summarise https://docs.anthropic.com/en/docs/build-with-claude/tool-use"}
]
}' Une page n'est récupérée que si le modèle décide d'en avoir besoin et que vous avez inclus synthorai:web_fetch. Les requêtes sans l'outil sont des requêtes ordinaires — zéro impact sur le comportement ou le coût.
Options
Chaque champ de l'entrée synthorai:web_fetch est optionnel :
| Paramètre | Description |
|---|---|
max_uses | Nombre maximal de pages récupérées par requête. 3 par défaut, plafonné à 10. C'est une limite de dépense, donc appliquée à travers les réessais — une requête déclarant max_uses: 1 est facturée au plus une récupération, même réessayée sur plusieurs canaux. |
{
"type": "synthorai:web_fetch",
"max_uses": 2
} L'utiliser avec Web Search
La recherche trouve les pages ; la récupération les lit. En déclarant les deux, le modèle peut chercher, choisir un résultat prometteur et rapatrier la page entière — ce qui est généralement ce que vous voulez pour les questions de type recherche :
"tools": [
{"type": "synthorai:web_search"},
{"type": "synthorai:web_fetch"}
] Forme de la réponse
Chaque récupération apparaît dans le tour assistant comme une paire de blocs, suivie de la réponse du modèle :
{
"type": "server_tool_use",
"id": "srvtoolu_synth_...",
"name": "web_fetch",
"input": { "url": "https://example.com/page" }
},
{
"type": "web_fetch_tool_result",
"tool_use_id": "srvtoolu_synth_...",
"content": {
"type": "web_fetch_result",
"url": "https://example.com/page",
"title": "Example page",
"content": { "type": "text", "text": "…page body…" }
}
} Le nombre de récupérations est rapporté dans usage, vous pouvez donc rapprocher la facturation vous-même :
"usage": {
"input_tokens": 9241,
"output_tokens": 412,
"cache_read_input_tokens": 0,
"cache_creation_input_tokens": 0,
"server_tool_use": { "web_fetch_requests": 1 }
} Facturation
| Élément | Prix |
|---|---|
| Chaque page récupérée | $0.01 / récupération |
| Tokens (prompt + complétion) | Prix d'entrée standard du modèle utilisé |
Le tarif par récupération n'est pas tout le coût. Une page récupérée entre dans la conversation comme tokens d'entrée, et un long article peut en faire plusieurs milliers — sur la plupart des modèles ce coût en tokens dépasse les $0.01 du tarif. Budgétez les deux.
Trois façons de rester prévisible :
- Réglez
max_usesau plus petit nombre dont votre tâche a besoin — il plafonne le tarif de toute la requête, réessais compris. - Récupérez des pages précises plutôt que de laisser le modèle explorer. Une URL collée par l'utilisateur, c'est une récupération ; « lire autour du sujet » peut en faire trois.
- Surveillez ensemble
usage.server_tool_use.web_fetch_requestsetusage.input_tokens— c'est généralement dans le second que part l'argent.
Limites et sécurité
- Seules les URL
httpethttpssont récupérées. Les URL avec identifiants intégrés sont rejetées. - Les adresses privées, loopback, link-local et de métadonnées cloud sont refusées — web_fetch n'atteint que des pages publiques.
- Le corps des pages est tronqué à une limite de caractères configurée avant d'entrer dans la conversation : une seule page énorme ne peut pas gonfler une requête sans limite.
- Une page irrécupérable revient comme bloc d'erreur au lieu de faire échouer toute la requête, et le modèle peut y réagir ou répondre sans la page.
- Tant que vous déclarez
synthorai:web_fetch, le nom nuweb_fetchest réservé — déclarer votre propre outil sous ce nom renvoie un400le nommant. Renommez le vôtre, ou retirez le paramètresynthorai:. - Une récupération refusée avant de quitter notre réseau — URL rejetée, domaine bloqué, backend non configuré — n'est pas facturée. Une récupération arrivée chez le fournisseur et qui y a échoué est facturée, car le fournisseur nous a facturés. Les deux comptent dans
max_uses.
Votre responsabilité sur ce que vous récupérez
web_fetch récupère une page sur votre instruction. C'est vous qui décidez quelle URL récupérer : cette récupération et l'usage de ce qui en revient relèvent de votre responsabilité.
- Vous devez avoir le droit d'accéder au contenu. Cela inclut les conditions d'utilisation du site cible, son
robots.txt, toute limite de paywall ou de connexion, ainsi que le droit d'auteur et les droits de bases de données applicables. Récupérer via nous ne vous accorde aucun accès que vous n'auriez pas autrement. - Les données personnelles restent votre obligation. Si une page récupérée contient des informations personnelles, vous en restez le responsable de traitement au sens du RGPD, de la PIPL et des régimes équivalents — base légale, conservation et toute demande d'effacement comprises.
- Les réclamations nées de vos récupérations vous appartiennent. Si un ayant droit ou un exploitant de site conteste un contenu que vous avez récupéré, la réclamation vous vise et vous en portez le coût. Cela reflète les conditions des fournisseurs de récupération amont par lesquels nous passons.
- La sortie du modèle n'est pas blanchie pour réutilisation. Une réponse construite sur du contenu récupéré peut en reproduire des parties. Le droit de republier cette sortie dépend de la licence de la source, et nous ne faisons aucune déclaration à ce sujet.
Ce qui est à notre charge : exploiter l'infrastructure de récupération, bloquer les adresses internes et de réseaux privés, respecter la liste de blocage de domaines configurée par votre administrateur, et ne pas conserver le contenu des pages au-delà du traitement de votre requête. Nous n'examinons pas la légalité des URL individuelles, et nous ne le pouvons pas — une URL seule ne porte pas sa licence.
Nous suspendrons web_fetch sur une clé API qui attire des signalements d'abus crédibles ou qu'un fournisseur de récupération signale, car un compte fournisseur suspendu prive tous les clients de la fonctionnalité.
FAQ
Le modèle peut-il récupérer une page que je n'ai pas mentionnée ?
Il peut suivre une URL trouvée via synthorai:web_search dans la même conversation — c'est tout l'intérêt de combiner les deux. Il a pour instruction de ne pas inventer d'URL ; s'il doit trouver une page, il doit d'abord chercher.
Que se passe-t-il si la page est derrière un login ou bloque les robots ?
Vous recevez un bloc d'erreur pour cette récupération et le modèle continue sans la page. La récupération compte quand même dans max_uses, car la requête a réellement été faite pour votre compte.
Déclarer l'outil change-t-il quelque chose quand aucune page n'est récupérée ?
Non. Facturation et comportement sont identiques à une requête ordinaire tant que le modèle ne récupère rien.