# Tanod Docs PDF to Images

> Tanod Docs PDF to Images 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).

Converts pages of a PDF file into PNG or JPEG images at a specified DPI, returning them inline as base64 or as 24-hour download URLs.

## Facts

- Endpoint: POST https://docs.tanod.dev/v1/pdf/to-images?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-to-images-27753725
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_xICWUJHrcuJ_oS51-3X2k

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-to-images-27753725 -d '<json body>'
```

Example prompt: Can you convert pages 1 through 3 of this PDF (https://example.com/report.pdf) into PNG images at 150 DPI and give me the base64 output?

## When to prefer this

Choose this endpoint when you need to rasterize PDF pages into PNG or JPEG images with control over resolution (36–300 DPI), page selection, color mode, and whether output comes back inline (base64) or as a temporary download URL. It is ideal for generating document previews, preparing PDF pages for downstream OCR or vision model analysis, or producing print-ready image exports from PDFs. Prefer it over general-purpose OCR or PDF-to-Markdown endpoints when you specifically need pixel-based image output rather than text extraction.

## Known failure modes

- PDF URL is private, internal, or IP-literal — request is refused
- PDF exceeds 20 MB via URL or 10 MB via base64 — request rejected
- More than 20 pages requested per call — exceeds per-call page limit
- Invalid page selection string format — validation error
- DPI out of range (below 36 or above 300) — validation error
- JPEG quality out of range (below 30 or above 95) — validation error
- PDF URL is unreachable or times out — fetch error
- Corrupted or non-PDF file provided — processing error

## 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 metadata about the conversion (DPI, format, operation name, input byte count, input page count, output byte count, file count) and an array of file objects per rendered page — each with page number, filename, dimensions (width, height), byte size, content type, and either a base64 data string or a download URL with expiry timestamp, byte size, content type, and SHA256 hash.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "dpi": {
   "type": "integer",
   "default": 150,
   "maximum": 300,
   "minimum": 36,
   "description": "36-300 (default 150)."
  },
  "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."
  },
  "pages": {
   "anyOf": [
    {
     "type": "string",
     "pattern": "^[0-9a-zA-Z ,\\-]+$",
     "maxLength": 200,
     "minLength": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Pages to render (default all; at most 20 per call). A closed selection of at most 5 pages is the lower price."
  },
  "format": {
   "enum": [
    "png",
    "jpeg"
   ],
   "type": "string",
   "default": "png",
   "description": "png (default) or jpeg."
  },
  "output": {
   "enum": [
    "base64",
    "url"
   ],
   "type": "string",
   "default": "base64",
   "description": "base64 (default): the file comes back inline as base64. url: the file is stored for 24 hours and the reply carries a download link (url, expires_at, bytes, content_type, sha256) instead of the base64, which keeps the file out of your context window."
  },
  "grayscale": {
   "type": "boolean",
   "default": false,
   "description": "Render in grayscale."
  },
  "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."
  },
  "jpeg_quality": {
   "type": "integer",
   "default": 85,
   "maximum": 95,
   "minimum": 30,
   "description": "JPEG quality (30-95, default 85)."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "dpi": 72,
  "files": [
   {
    "dpi": 72,
    "name": "page-1.png",
    "page": 1,
    "bytes": 5915,
    "width": 595,
    "height": 842,
    "data_base64": "iVBORw0KGgoAAAAN... (trimmed: 7,888 base64 characters in the reply)",
    "content_type": "image/png"
   }
  ],
  "format": "png",
  "operation": "to-images",
  "file_count": 1,
  "input_bytes": 13264,
  "input_pages": 1,
  "output_bytes": 5915,
  "untrusted_content": true
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-docs-pdf-to-images-27753725/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)
