---
title: "Fetch any public web page or JSON API and get its status, content type, headers and body back. For agents that need to read a page they cannot reach themselves. Private networks and loopback addresses are blocked, and large bodies are truncated rather than dropped."
method: POST
path: "/v1/tools/web-fetch"
---

# Fetch any public web page or JSON API and get its status, content type, headers and body back. For agents that need to read a page they cannot reach themselves. Private networks and loopback addresses are blocked, and large bodies are truncated rather than dropped.

`POST /v1/tools/web-fetch`

## Request

- Base URL: `https://agents.dexl.io`
- URL: `https://agents.dexl.io/v1/tools/web-fetch`
- Auth: API key in header `X-Payment`

Paid per call via x402. Send without payment to get the exact price in the 402.

## Request body

- object
  - `url` string, required: Absolute http(s) URL on a public address
  - `method` 'GET' | 'HEAD' | 'POST'
  - `headers` object
  - `body` string: Only for POST

## Response `200`

The tool output

## Other responses

- `400`: The input did not match the schema
- `402`: Payment required

---

[API](https://skmtc.dev/dexl/apis/dexl-agents.md) · [All operations](https://skmtc.dev/dexl/apis/dexl-agents/llms.txt) · [OpenAPI document](https://skmtc.dev/dexl/apis/dexl-agents/revisions/e3692765c3f7?raw)
