# Claude citations keep nullable document titles

> Agno now keeps document_title: null on Claude's document citations, so the turn after a cited answer goes through where Anthropic used to reject it with a 400.

- Published: 2026-10-01
- Author: Bas Nijholt
- Categories: Changelog
- Canonical: https://www.agno.com/blog/claude-citations-keep-nullable-document-titles
- Markdown: https://www.agno.com/blog/claude-citations-keep-nullable-document-titles.md

Agno's `Claude` model saves each text block with `model_dump(exclude_none=True)`, which removed a citation's `document_title` whenever Claude returned it as `null`. Anthropic declares that field required but nullable, so replaying the saved answer on the next turn failed with HTTP 400 `page_location.document_title: Field required`.

Agno's shared content-block helper now puts `document_title: None` back on `page_location`, `char_location` and `content_block_location` citations when the key is missing. It runs on response capture and on replay, so sessions saved by earlier releases recover too, and it formats copies so your stored history stays as it was.

We parsed a Claude response with a null-titled page citation offline and printed the citation Agno sends on the following turn:

```text
Before
{
  "cited_text": "Revenue grew 12%",
  "document_index": 0,
  "end_page_number": 4,
  "start_page_number": 3,
  "type": "page_location"
}

Now
{
  "document_title": null,
  "cited_text": "Revenue grew 12%",
  "document_index": 0,
  "end_page_number": 4,
  "start_page_number": 3,
  "type": "page_location"
}
```

Existing titles, signed thinking blocks, block order and web search citations behave as before.

See the [cookbook](https://github.com/agno-agi/agno/blob/main/cookbook/90_models/anthropic/pdf_input_bytes.py), and learn more about [reading Claude citations from a PDF](https://docs.agno.com/models/providers/native/anthropic/usage/pdf-input-bytes) in the documentation.
