🎁 Novità Registrati gratis, 10 chiamate le offriamo noi. Fino a $1, senza carta.

Web Fetch

Dai al modello il testo completo di una pagina di cui hai già l'URL. Aggiungi una voce strumento e Synthorai recupera la pagina, la ripulisce e mette il corpo leggibile nella conversazione — su qualsiasi modello, per qualsiasi canale.

Richiesta minima

Aggiungi synthorai:web_fetch a tools su /v1/messages. Nient'altro cambia:

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"}
    ]
  }'

Una pagina viene recuperata solo quando il modello decide di averne bisogno e tu hai incluso synthorai:web_fetch. Le richieste senza lo strumento sono richieste ordinarie — impatto zero su comportamento o costo.

Opzioni

Ogni campo della voce synthorai:web_fetch è opzionale:

ParametroDescrizione
max_usesNumero massimo di pagine per richiesta. Predefinito 3, tetto 10. È un limite di spesa, quindi vale attraverso i retry — una richiesta con max_uses: 1 paga al massimo un fetch anche se ritentata su più canali.
{
  "type": "synthorai:web_fetch",
  "max_uses": 2
}

Usarlo con Web Search

La ricerca trova le pagine; il fetch le legge. Dichiarandoli entrambi il modello può cercare, scegliere un risultato promettente e tirarsi dentro l'intera pagina — che di solito è ciò che vuoi per le domande di tipo ricerca:

"tools": [
  {"type": "synthorai:web_search"},
  {"type": "synthorai:web_fetch"}
]

Forma della risposta

Ogni fetch appare nel turno assistant come coppia di blocchi, seguita dalla risposta del modello:

{
  "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…" }
  }
}

Il numero di fetch è riportato in usage, così puoi riconciliare l'addebito da solo:

"usage": {
  "input_tokens": 9241,
  "output_tokens": 412,
  "cache_read_input_tokens": 0,
  "cache_creation_input_tokens": 0,
  "server_tool_use": { "web_fetch_requests": 1 }
}

Fatturazione

VocePrezzo
Ogni pagina recuperata$0.01 / fetch
Token (prompt + completamento)Prezzo input standard del modello utilizzato
!

La tariffa per fetch non è tutto il costo. Una pagina recuperata entra nella conversazione come token di input, e un articolo lungo può valerne diverse migliaia — sulla maggior parte dei modelli quel costo supera la tariffa di $0.01. Metti a budget entrambi.

Tre modi per restare prevedibili:

  • Imposta max_uses al numero più piccolo che serve al tuo compito — fa da tetto alla tariffa dell'intera richiesta, retry inclusi.
  • Recupera pagine specifiche invece di lasciare esplorare il modello. Un URL incollato dall'utente è un fetch; "leggere intorno all'argomento" possono essere tre.
  • Osserva insieme usage.server_tool_use.web_fetch_requests e usage.input_tokens — i soldi di solito vanno nel secondo.

Limiti e sicurezza

  • Vengono recuperati solo URL http e https. Gli URL con credenziali incorporate sono respinti.
  • Indirizzi privati, loopback, link-local e di metadati cloud sono rifiutati — web_fetch raggiunge solo pagine pubbliche.
  • Il corpo delle pagine viene troncato a un limite di caratteri configurato prima di entrare nella conversazione: una singola pagina enorme non può gonfiare una richiesta senza limiti.
  • Una pagina non recuperabile torna come blocco di errore invece di far fallire l'intera richiesta, e il modello può reagirvi o rispondere senza la pagina.
  • Finché dichiari synthorai:web_fetch, il nome nudo web_fetch è riservato — dichiarare un tuo strumento con quel nome restituisce un 400 che lo nomina. Rinomina il tuo, o togli il parametro synthorai:.
  • Un fetch rifiutato prima di lasciare la nostra rete — URL respinto, dominio bloccato, backend non configurato — non viene addebitato. Uno arrivato al provider e lì fallito viene addebitato, perché il provider ha addebitato noi. Entrambi contano in max_uses.

La tua responsabilità per ciò che recuperi

web_fetch recupera una pagina su tua istruzione. Decidi tu quale URL recuperare, quindi quel recupero e l'uso di ciò che torna sono responsabilità tua.

  • Devi avere il diritto di accedere al contenuto. Include i termini di servizio del sito, il suo robots.txt, ogni paywall o confine di login, e i diritti d'autore e sui database applicabili. Recuperare tramite noi non ti concede accessi che altrimenti non avresti.
  • I dati personali restano un tuo obbligo. Se una pagina recuperata contiene informazioni personali, ne resti il titolare ai sensi di GDPR, PIPL e regimi equivalenti — inclusi base giuridica, conservazione e qualunque richiesta di cancellazione.
  • Le pretese derivanti dai tuoi fetch sono tue. Se un titolare di diritti o un gestore di sito avanza una pretesa su contenuti che hai recuperato, quella pretesa è rivolta a te e ne sostieni il costo. Ciò rispecchia i termini dei provider di recupero a monte attraverso cui instradiamo.
  • L'output del modello non è autorizzato al riuso. Una risposta costruita su materiale recuperato può riprodurne delle parti. Se puoi ripubblicare quell'output dipende dalla licenza della fonte, e non facciamo alcuna dichiarazione al riguardo.

Cosa spetta a noi: gestiamo l'infrastruttura di recupero, blocchiamo indirizzi interni e di reti private, rispettiamo la blocklist di domini configurata dal tuo amministratore e non conserviamo il contenuto delle pagine oltre l'evasione della tua richiesta. Non esaminiamo la legalità dei singoli URL, e non possiamo — un URL da solo non porta la propria licenza.

!

Sospenderemo web_fetch su una chiave API che attiri segnalazioni credibili di abuso o che un provider di recupero segnali, perché un account provider sospeso spegne la funzione per tutti i clienti.

FAQ

Il modello può recuperare una pagina che non ho menzionato?

Può seguire un URL trovato tramite synthorai:web_search nella stessa conversazione: è il senso di combinare i due. Ha istruzioni di non inventare URL; se deve trovare una pagina, prima deve cercare.

Cosa succede se la pagina è dietro un login o blocca i crawler?

Ricevi un blocco di errore per quel fetch e il modello prosegue senza la pagina. Il fetch conta comunque in max_uses perché la richiesta è stata davvero fatta per tuo conto.

Dichiarare lo strumento cambia qualcosa quando nessuna pagina viene recuperata?

No. Fatturazione e comportamento sono identici a una richiesta normale finché il modello non recupera davvero qualcosa.