# Tanod Docs: Office to PDF Converter

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

Converts Office documents (DOCX, XLSX, PPTX, ODT, ODS, ODP, RTF, plain text) to PDF format via LibreOffice rendering

## Facts

- Endpoint: POST https://docs.tanod.dev/v1/docs/to-pdf?utm_source=zero.xyz
- Price: $0.01/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-office-to-pdf-converter-964242e2
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_LRCKwlAGU3oYujNW2X6CK

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-office-to-pdf-converter-964242e2 -d '<json body>'
```

Example prompt: Can you convert this Word document to PDF? Here's the public URL: https://example.com/report.docx — give me back the file as base64.

## When to prefer this

Use this endpoint when you need to convert Office-format documents (Word, Excel, PowerPoint, OpenDocument, RTF) to PDF without requiring a Microsoft Office license. It is ideal for agents that need to produce universally viewable PDFs from editable documents programmatically, especially when files are available via public URL or as base64. Prefer the URL output mode for large files to avoid oversized context windows. Be aware that rendering is done by LibreOffice, so pixel-perfect fidelity to Microsoft Office layout is not guaranteed — fonts may be substituted and page counts may differ.

## Known failure modes

- Document URL is private, internal, or IP-literal — returns an error refusing the URL
- File exceeds 20 MB (URL) or 10 MB decoded (base64) size limit
- Unsupported file format provided — content detection fails
- Network timeout or unreachable URL
- Font substitution causes layout reflow and more pages than expected (not an error, but a fidelity issue noted in response)
- Macros in the document are silently not executed
- Non-HTTP/HTTPS/mailto hyperlinks are removed from output

## How this service works

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

## Output

Returns a JSON object containing the converted PDF file (as base64 inline or a 24-hour download URL depending on the output parameter), along with metadata including file name, byte size, page count, content type, original format detected, operation name, input/output byte counts, a fidelity note describing LibreOffice rendering limitations (font substitutions, no macros, link handling), and flags for any active content removed.

## 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 document (at most 20 MB; private, internal and IP-literal hosts are refused); or use file_base64."
  },
  "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."
  },
  "filename": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 255,
     "minLength": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Optional original file name (printable, at most 255 characters). The format is detected from the content; the name only matters for text that looks like HTML, which a .txt or .md name keeps as plain text to print as it is."
  },
  "file_base64": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 13398872,
     "minLength": 1
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "The document as base64 (at most 10 MB decoded); or use url. DOCX, XLSX, PPTX, ODT, ODS, ODP, RTF or plain text, detected from the content."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "file": {
   "name": "converted.pdf",
   "bytes": 106203,
   "pages": 9,
   "data_base64": "JVBERi0xLjYKJb/3... (trimmed: 141,604 base64 characters in the reply)",
   "content_type": "application/pdf"
  },
  "pages": 9,
  "format": "docx",
  "operation": "to-pdf",
  "input_bytes": 1311881,
  "output_bytes": 106203,
  "fidelity_note": "Rendered by LibreOffice 7.4, so layout and page breaks can differ from Microsoft Office. Fonts that are not installed are substituted: Liberation stands in for Arial, Times New Roman and Courier New, and the wider DejaVu for Calibri, Cambria and other fonts, so a document can run to more pages; scripts the fonts do not cover, such as Chinese, Japanese and Korean, may show missing-glyph boxes. Macros never run and nothing in the document is fetched. Hyperlinks are kept when they point to http, https, mailto or a place in the document; links of any other kind are removed (counted in active_content_removed).",
  "untrusted_content": true,
  "active_content_removed": {}
 }
}
```

## More

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