Let any model read a web page by its address, billed in DA per page read.
The opendunes:web_fetch helper lets any model read a page by its address. When the model needs the content of a URL — one in the prompt, or one a search found — it asks for it; the page is fetched, and its text, title and address go back to the model.
curl https://opendunes.com/v1/chat/completions \
-H "Authorization: Bearer $OPENDUNES_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "anthropic/claude-sonnet-5",
"messages": [{ "role": "user", "content": "Summarise https://www.aps.dz in three lines." }],
"tools": [{ "type": "opendunes:web_fetch" }]
}'It works the same on /v1/responses and /v1/messages.
| Parameter | Does |
|---|---|
engine | auto (the default), native, exa, parallel, or opendunes — a direct fetch of the page |
max_uses | pages the model may read in the request |
max_content_tokens | cuts a page longer than this, in approximate tokens |
allowed_domains · blocked_domains | only these sites, or never these |
{
"type": "opendunes:web_fetch",
"parameters": { "max_uses": 3, "max_content_tokens": 4000 }
}firecrawl bills an account of your own elsewhere and is not offered: naming it answers 400.
Each page read is billed in DA, on top of the model's tokens — the page the model reads is input tokens. The request's usage.cost carries the whole charge. A read counts as one of the request's 30 helper steps.