🎁 Nouveau Inscription gratuite, 10 appels offerts. Jusqu'à 1 $, sans carte.

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ètreDescription
max_usesNombre 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émentPrix
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_uses au 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_requests et usage.input_tokens — c'est généralement dans le second que part l'argent.

Limites et sécurité

  • Seules les URL http et https sont 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 nu web_fetch est réservé — déclarer votre propre outil sous ce nom renvoie un 400 le nommant. Renommez le vôtre, ou retirez le paramètre synthorai:.
  • 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.