# Tanod Docs PPTX Build

> Tanod Docs PPTX Build 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).

Generates a PowerPoint (.pptx) presentation file from structured slide data including titles, bullets, layouts, speaker notes, and optional theme settings.

## Facts

- Endpoint: POST https://docs.tanod.dev/v1/docs/pptx-build?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-pptx-build-78138b2d
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_JFgZNKdx6VvH52m6PC22Q

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-pptx-build-78138b2d -d '<json body>'
```

Example prompt: Build me a 5-slide PowerPoint presentation called 'Q3 Sales Review' with a title slide, three content slides covering revenue trends, top accounts, and regional breakdown (each with 4 bullet points), and a closing section slide — use Arial font and a navy blue accent color (#1F4E79), and give me back a download link.

## When to prefer this

Choose this endpoint when you need to programmatically generate a PowerPoint (.pptx) file from structured slide content — especially when automating report generation, building agent-driven presentation workflows, or producing branded decks with custom fonts and colors. Prefer the 'url' output mode for large decks to avoid flooding the context window with base64 data. This is the right choice over general document APIs when the output format must specifically be .pptx (not PDF or DOCX).

## Known failure modes

- Exceeds 100 slides limit — request rejected with validation error
- Bullet point or title exceeds 2000 character limit — field truncated or request rejected
- Invalid accent_color format (not #RRGGBB) — schema validation error
- Font not installed on viewer's machine — text renders in fallback font
- Output set to 'url' but storage fails — falls back to error response
- Empty slides array — request rejected (minimum 1 slide required)

## 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 generated .pptx file either as inline base64 data or as a time-limited download URL (valid 24 hours). Includes the file name, byte size, content type, slide count, and a SHA256 checksum. The response also flags whether the deck contains untrusted content.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "properties": {
  "theme": {
   "anyOf": [
    {
     "type": "object",
     "properties": {
      "font": {
       "anyOf": [
        {
         "type": "string",
         "pattern": "^[A-Za-z0-9][A-Za-z0-9 ._()-]*$",
         "maxLength": 64,
         "minLength": 1
        },
        {
         "type": "null"
        }
       ],
       "default": null,
       "description": "Font name for all text, e.g. Calibri or Arial (the viewer needs it installed)."
      },
      "accent_color": {
       "anyOf": [
        {
         "type": "string",
         "pattern": "^#[0-9a-fA-F]{6}$"
        },
        {
         "type": "null"
        }
       ],
       "default": null,
       "description": "Title colour as #RRGGBB (default #1F4E79)."
      }
     },
     "additionalProperties": false
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Optional font and title colour."
  },
  "title": {
   "anyOf": [
    {
     "type": "string",
     "maxLength": 2000
    },
    {
     "type": "null"
    }
   ],
   "default": null,
   "description": "Deck title: the file's title property and its file name (default presentation.pptx)."
  },
  "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."
  },
  "slides": {
   "type": "array",
   "items": {
    "type": "object",
    "required": [
     "title"
    ],
    "properties": {
     "notes": {
      "anyOf": [
       {
        "type": "string",
        "maxLength": 2000
       },
       {
        "type": "null"
       }
      ],
      "default": null,
      "description": "Speaker notes (plain text, at most 2,000 characters)."
     },
     "title": {
      "type": "string",
      "maxLength": 2000,
      "description": "The slide title (at most 2,000 characters; may be empty on a blank slide)."
     },
     "layout": {
      "enum": [
       "title",
       "title_and_content",
       "section",
       "blank"
      ],
      "type": "string",
      "default": "title_and_content",
      "description": "title (title and subtitle lines), title_and_content (default), section (a divider) or blank."
     },
     "bullets": {
      "anyOf": [
       {
        "type": "ar
… (truncated)
```

## Response schema (JSON Schema)

```json
{
 "type": "json",
 "example": {
  "file": {
   "name": "quarterly-review.pptx",
   "bytes": 34872,
   "data_base64": "UEsDBBQAAAAIAHSv... (trimmed: 46,496 base64 characters in the reply)",
   "content_type": "application/vnd.openxmlformats-officedocument.presentationml.presentation"
  },
  "slides": 3,
  "operation": "pptx-build",
  "output_bytes": 34872,
  "untrusted_content": true
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/tanod-docs-pptx-build-78138b2d/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)
