---
title: "Web Read"
method: POST
path: "/web/read"
tags: ["web"]
---

# Web Read

`POST /web/read`

## Request

- Base URL: `https://api.moda.app/v1`
- URL: `https://api.moda.app/v1/web/read`
- Auth: HTTP bearer

Read one web page or document as clean markdown (metered).

Web pages return their main content plus the page title and links. URLs
serving PDF, DOCX, or PPTX are detected automatically and extracted as
document markdown (``links`` is empty for documents).

## Headers

- `Moda-Version` '2026-04-12' | '2026-05-01'

## Request body

- WebReadRequest
  - `url` string, uri, required: The http(s) page or document (PDF/DOCX/PPTX) to read.
  - `idempotency_key` string, nullable: A retried call with the same key replays the stored response (replayed:true) instead of paying for a second provider request.

## Response `200`

Successful Response

- object

## Other responses

- `401`: Authentication required.
- `402`: Insufficient credits for a metered operation.
- `403`: Permission denied for this scope.
- `404`: Resource not found.
- `409`: Conflict (idempotency / resource state).
- `422`: Request validation failed.
- `429`: Rate limit exceeded.
- `500`: Internal error.

## Changes

- **2026-11-03** `9ac6a3abc0f8`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/moda/apis/moda-public-api/changes/web/read/post.md)

---

[API](https://skmtc.dev/moda/apis/moda-public-api.md) - [All operations](https://skmtc.dev/moda/apis/moda-public-api/llms.txt) - [OpenAPI document](https://skmtc.dev/moda/apis/moda-public-api/revisions/9ac6a3abc0f8?raw)
