# Tanod pdfpeek – Images to PDF

> Tanod pdfpeek – Images to PDF is a paid API for AI agents from tanod.dev, paid per call via x402, $0.005/call, status unknown (last checked 2026-10-11).

Converts 1 to 30 PNG, JPEG, or WebP images into a single PDF document with configurable margins, page size, and orientation.

## Facts

- Endpoint: POST https://tanod.dev/v1/pdf/from-images?utm_source=zero.xyz
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-10-11
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/tanod-pdfpeek-images-to-pdf-a307591d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_HHD3Kns-odVET80hJdqsN

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-pdfpeek-images-to-pdf-a307591d -d '<json body>'
```

Example prompt: Can you take these three JPEG images — https://example.com/img1.jpg, https://example.com/img2.jpg, and https://example.com/img3.jpg — and combine them into a single A4 PDF with a 10-point margin around each page?

## When to prefer this

Choose this endpoint when you need a simple, pay-per-call service to bundle up to 30 PNG, JPEG, or WebP images into a single PDF without setting up a local library or managing PDF rendering infrastructure. It supports both URL-based and base64 image inputs, making it easy to use in automated pipelines. Prefer it for lightweight document assembly tasks where you don't need OCR, text overlay, or advanced PDF features.

## Known failure modes

- Image URL unreachable or returns non-200 response — request fails with an error
- Image file exceeds 10 MB limit — rejected with a size error
- More than 30 images submitted — rejected with a validation error
- Unsupported image format (e.g. GIF, BMP) — rejected with a format error
- Base64 string malformed or not a valid image — returns decoding error
- Payment not fulfilled (x402 protocol) — endpoint returns 402 Payment Required

## How this service works

One MCP server and HTTP API with 193 pay-per-call tools for AI agents (security checks, chain data, finance, aviation, documents), plus free uptime and MikroTik monitoring and 130+ free browser tools. No signup; free daily tier. Operated by an AI.

## Output

A PDF file (binary) containing one page per input image, with each image rendered according to the specified page size, orientation, and margin settings. Up to 30 images can be combined into one PDF.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "images": {
   "type": "array",
   "items": {
    "type": "object",
    "properties": {
     "url": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 2048,
        "minLength": 1
       },
       {
        "type": "null"
       }
      ],
      "default": null,
      "description": "http(s) URL of a PNG, JPEG or WebP (at most 10 MB)."
     },
     "image_base64": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 13398872,
        "minLength": 1
       },
       {
        "type": "null"
       }
      ],
      "default": null,
      "description": "The image as base64; or use url."
     }
    },
    "additionalProperties": false
   },
   "maxItems": 30,
   "minItems": 1,
   "description": "1-30 images (PNG, JPEG, WebP), each {url} or {image_base64}."
  },
  "margin": {
   "type": "number",
   "default": 0,
   "maximum": 144,
   "minimum": 0,
   "description": "Points (1/72 in) around each image."
  },
  "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."
  },
  "page_size": {
   "enum": [
    "fit",
    "a4",
    "letter"
   ],
   "type": "string",
   "default": "fit",
   "description": "fit (each page is its image's size), a4 or letter."
  },
  "orientation": {
   "enum": [
    "auto",
    "portrait",
    "landscape"
   ],
   "type": "string",
   "default": "auto",
   "description": "a4/letter only."
  }
 }
}
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "file": {
   "name": "images.pdf",
   "bytes": 3285,
   "pages": 1,
   "data_base64": "JVBERi0xLjMKJeLj... (trimmed: 4,380 base64 characters in the reply)",
   "content_type": "application/pdf"
  },
  "images": 1,
  "operation": "from-images",
  "page_size": "a4",
  "input_bytes": 2183,
  "input_pages": 1,
  "output_bytes": 3285,
  "untrusted_content": true
 }
}
```

## More

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