# Read a whole published page in one call

> Agno's Knowledge.read_full_page returns an entire published page from one bounded read, pinned to the revision your search returned. It returns None when the page is over your character budget.

- Published: 2026-09-08
- Author: Ashpreet Bedi
- Categories: Changelog
- Canonical: https://www.agno.com/articles/read-a-whole-published-page-in-one-call
- Markdown: https://www.agno.com/articles/read-a-whole-published-page-in-one-call.md

With Agno's `Knowledge.read_full_page` or `aread_full_page`, an agent that found the right page through search no longer walks it with `read_page`, one slice at a time, following `next_offset` to the end. Both methods make a single SQL read against one read-only snapshot, so the text can't change partway through.

```python
hit = knowledge.search_pages("How do agents use tools?").results[0]

body = knowledge.read_full_page(hit.path, revision=hit.revision, max_chars=24_000)
if body is None:
    ...  # longer than the budget, so keep the search excerpts
```

Pass the `revision` from a search hit to pin the read. If someone republished the page after that search, `read_full_page` raises `PageChanged`. A page longer than `max_chars` returns `None`, and you can fall back to the excerpts you already have. A missing page raises `PageNotFound`. A read that runs past its `timeout` raises `PageError`. The defaults are 24,000 characters and 2 seconds.

`read_full_page` shares the eight-slot worker pool that Agno's other page reads use.

See the [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/05_agent_os/27_public_pages/full_page.py), and learn more about [published pages](https://docs.agno.com/knowledge/published-pages) in the documentation.
