# Tanod Docs PDF Inspect

> Tanod Docs PDF Inspect is a paid API for AI agents from docs.tanod.dev, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-13).

Inspects a PDF and returns detailed structural metadata including page count, dimensions, text layers, form fields, annotations, XFA, JavaScript, encryption, and scanned-page detection.

## Facts

- Endpoint: POST https://docs.tanod.dev/v1/pdf/inspect?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-13
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-docs-pdf-inspect-0f32e158
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_u87PmSkDCCpireajtRvem

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability tanod-docs-pdf-inspect-0f32e158 -d '<json body>'
```

Example prompt: Can you inspect this PDF at https://example.com/contract.pdf and tell me whether it has a text layer, how many pages it has, if there are any form fields, and whether it contains JavaScript or other active content?

## When to prefer this

Use this endpoint when you need to understand a PDF's structure before processing it further — for example, to decide whether OCR is needed, whether form fields can be auto-filled, whether the document contains suspicious active content, or to route documents in a pipeline based on their properties. Prefer this over full-conversion endpoints when you only need metadata, not content extraction.

## Known failure modes

- URL points to a non-PDF file — returns error
- PDF exceeds 20 MB via URL or 10 MB via base64 — rejected
- URL resolves to a private/internal IP or non-public host — refused
- Malformed or corrupted PDF — parsing error returned
- Neither url nor pdf_base64 provided — validation error
- Base64 string exceeds maximum length — rejected

## How this service works

Documents: DOCX template fill, Office to PDF, any file to Markdown, PDF to Word, OCR, PDF pipeline.

## Output

A JSON object containing: total page count, PDF version, linearization status, encryption status, XFA and JavaScript presence flags, attachment count, form field count, signature field count, tagged/outline status, and a per-page breakdown with paper size, dimensions (mediabox), rotation, orientation, text character count, image count, image coverage percentage, annotation count, whether the page looks scanned, and whether it has a text layer.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "url": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 2048,
     "minLength": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Public http(s) URL of the PDF (at most 20 MB; private, internal and IP-literal hosts are refused); or use pdf_base64."
  },
  "pdf_base64": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 13398872,
     "minLength": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "The PDF as base64 (at most 10 MB decoded per request); or use url."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "xfa": true,
  "pages": [
   {
    "page": 1,
    "paper": "Letter",
    "images": 0,
    "mediabox": [
     0,
     0,
     611.98,
     791.97
    ],
    "rotation": 0,
    "width_pt": 611.98,
    "height_pt": 791.97,
    "text_chars": 5794,
    "annotations": 23,
    "orientation": "portrait",
    "looks_scanned": false,
    "has_text_layer": true,
    "image_coverage": 0
   },
   {
    "page": 2,
    "paper": "Letter",
    "images": 0,
    "mediabox": [
     0,
     0,
     611.98,
     791.97
    ],
    "rotation": 0,
    "width_pt": 611.98,
    "height_pt": 791.97,
    "text_chars": 8392,
    "annotations": 0,
    "orientation": "portrait",
    "looks_scanned": false,
    "has_text_layer": true,
    "image_coverage": 0
   },
   {
    "page": 3,
    "paper": "Letter",
    "images": 0,
    "mediabox": [
     0,
     0,
     611.98,
     791.97
    ],
    "rotation": 0,
    "width_pt": 611.98,
    "height_pt": 791.97,
    "text_chars": 7887,
    "annotations": 0,
    "orientation": "portrait",
    "looks_scanned": false,
    "has_text_layer": true,
    "image_coverage": 0
   },
   {
    "page": 4,
    "paper": "Letter",
    "images": 0,
    "mediabox": [
     0,
     0,
     611.98,
     791.97
    ],
    "rotation": 0,
    "width_pt": 611.98,
    "height_pt": 791.97,
    "text_chars": 7457,
    "annotations": 0,
    "orientation": "portrait",
    "looks_scanned": false,
    "has_text_layer": true,
    "image_coverage": 0
   },
   {
    "page": 5,
    "paper": "Letter",
    "images": 0,
    "mediabox": [
     0,
     0,
     611.98,
     791.97
    ],
    "rotation": 0,
    "width_pt": 611.98,
    "height_pt": 791.97,
    "text_chars": 6114,
    "annotations": 0,
    "orientation": "portrait",
    "looks_scanned": false,
    "has_text_layer": true,
    "image_coverage": 0
   },
   {
    "page": 6,
    "paper": "Letter",
    "images": 0,
    "mediabox": [
     0,
     0,
     611.98,
     791.97
    ],
    "rotation": 0,
    "width_pt": 611.98,
    "height_pt": 791.97,
    "text_chars": 3147,
    "annotations": 0,
    "orientation": "portrait",
    "looks_scanned": false,
    "has_text_layer": true,
    "image_coverage": 0
   }
  ],
  "tagged": true,
  "has_form": true,
  "encrypted": false,
  "operation": "inspect",
  "linearized": false,
  "page_count": 6,
  "attachments": 0,
  "form_fields": 23,
  "has_outline": false,
  "input_bytes": 140815,
  "pdf_version": "1.7",
  "outline_depth": 0,
  "outline_items": 0,
  "sca
… (truncated)
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-docs-pdf-inspect-0f32e158/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from docs.tanod.dev](https://www.zero.xyz/host/docs.tanod.dev/llms.txt)
