Read a web page

Turn a public web page into clean Markdown in one call, from your agent through the tools server or from your code, on the same Flux key.

Send a URL and get the page back as clean Markdown, ready to hand to a model. No HTML parsing and no scraping code. It runs on the same key as your chat requests and is billed to the same account. It is a paid ability.

PartStatus
Over the API (POST /v1/fetch)Live
From your agent (web_fetch)Live

Reach for it when you want to ground a model on a page you know: an article, a doc or a changelog. To find pages you do not know yet, use Search the web.

From your agent or your code

Add the Flux tools server once, and your agent gets a web_fetch tool that takes a url. From your own code, send the URL to POST /v1/fetch.

Built into Murage, which decides which abilities it uses. Nothing to set up here. See murage.ai.

A successful read returns:

json
{
  "markdown": "# Example Domain\n\nThis domain is for use in illustrative examples...",
  "format": "markdown",
  "url": "https://example.com"
}

From the Flux CLI, the same read is one command:

bash
fluxrouter fetch https://example.com

The full field list and every error are in the fetch reference.

Pages that need a browser

Some pages build themselves with JavaScript, so a plain read comes back empty or missing content. Set "render": true and Flux renders the page in a browser before it extracts the text.

bash
curl https://api.fluxrouter.ai/v1/fetch \
  -H "Authorization: Bearer $FLUX_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "url": "https://app.example.com/dashboard", "render": true }'
bash
fluxrouter fetch https://app.example.com/dashboard --render

A rendered read costs more than a plain one. render is an API option: the web_fetch tool always does a plain read.

Cache and billing

  • You pay per page read: priced per call. A rendered read is priced separately from a plain one.
  • The same URL read again within 6 hours comes from the cache, and a cached read is not billed.
  • Failed reads and blocked URLs are not billed.
  • A read that takes longer than 25 seconds fails with a 502.

Charges land on the same bill as the rest of your usage. See How billing works.

On the Free plan a read answers 402 and nothing is charged. Upgrade in Billing.

What it cannot read

  • Private addresses. Private, loopback, link-local and cloud metadata addresses are refused with 400 blocked target. Only public http and https URLs work.
  • Major social networks. Their pages are refused with 400 social_blocked.
  • Pages behind a sign-in. Reads do not log in, so you get whatever a signed-out visitor sees.

The endpoint always returns Markdown. It is built to feed a model, not to mirror raw HTML.

If something goes wrong

Every read error, with its fix, is on Read a page problems.