# Full Book to Audiobook with a Spend Ceiling

**Use case:** 

Narrate as much of a full-length book as a fixed budget covers. The run stops cleanly at the last MP3 part the ceiling pays for and reports status 'capped', so a long book never turns into a surprise bill.

## Input

```json
{
  "documentUrl": "https://www.gutenberg.org/cache/epub/1342/pg1342.txt",
  "text": "# Chapter 1\n\nIt was the best of times, it was the worst of times...",
  "model": "edge-tts",
  "language": "en",
  "voice": "en-GB-SoniaNeural",
  "speed": 1,
  "instructions": "Speak slowly and deliberately, like an audiobook narrator.",
  "pageRange": "1-10",
  "enableOcr": true,
  "maxCostUsd": 5,
  "chunkSize": 4000,
  "concurrency": 5,
  "resume": true,
  "skipFailedChunks": true,
  "maxPartMb": 10,
  "proxyConfiguration": {
    "useApifyProxy": false
  },
  "debug": false
}
```

## Output

```json
{
  "status": {
    "label": "Outcome",
    "format": "string"
  },
  "title": {
    "label": "Document title",
    "format": "string"
  },
  "indexUrl": {
    "label": "Index page URL",
    "format": "string"
  },
  "audioUrl": {
    "label": "First MP3 URL",
    "format": "string"
  },
  "audioKvKey": {
    "label": "Key-value store key"
  },
  "durationSeconds": {
    "label": "Total duration in seconds",
    "format": "number"
  },
  "durationHuman": {
    "label": "Total duration, formatted",
    "format": "string"
  },
  "partsCount": {
    "label": "Number of MP3 parts",
    "format": "integer"
  },
  "sizeBytes": {
    "label": "Total audio size in bytes",
    "format": "integer"
  },
  "audioFormat": {
    "label": "Audio format",
    "format": "string"
  },
  "chars": {
    "label": "Characters narrated",
    "format": "integer"
  },
  "pagesProcessed": {
    "label": "Pages or sections narrated",
    "format": "integer"
  },
  "ocrPagesProcessed": {
    "label": "Pages recovered by OCR",
    "format": "integer"
  },
  "language": {
    "label": "Language setting used",
    "format": "string"
  },
  "voice": {
    "label": "Voice used",
    "format": "string"
  },
  "model": {
    "label": "TTS model used",
    "format": "string"
  },
  "cost": {
    "label": "Actor charges for this run in USD",
    "format": "number"
  },
  "chunksSucceeded": {
    "label": "Chunks OK",
    "format": "number"
  },
  "chunksFailed": {
    "label": "Chunks skipped",
    "format": "number"
  },
  "error": {
    "label": "Error message when status is failed",
    "format": "string"
  }
}
```

## About this Actor

This example demonstrates how to use [PDF to MP3 - Convert PDF, EPUB, DOCX & Text to Audiobook](https://apify.com/marielise.dev/pdf-to-mp3.md) with a specific input configuration. Visit the [Actor detail page](https://apify.com/marielise.dev/pdf-to-mp3.md) to learn more, explore other use cases, and run it yourself.


## How to integrate an Actor?

If asked about integration, you help developers integrate Actors into their projects.
You adapt to their stack and deliver integrations that are safe, well-documented, and production-ready.
This Task's input is already configured above — use it as-is rather than inventing a new one.

- **AI agents and MCP clients** — the [Apify MCP server](https://docs.apify.com/integrations/mcp.md) at `https://mcp.apify.com` (remote, streamable HTTP, OAuth on first use).
- **Agentic workflows and local Actor development** — [Agent Skills](https://apify.com/.well-known/agent-skills/index.json) with the [Apify CLI](https://docs.apify.com/cli/docs.md): `npm install -g apify-cli`, then `apify login`.
- **JavaScript/TypeScript projects** — the official [JS/TS client](https://docs.apify.com/api/client/js/docs.md): `npm install apify-client`.
- **Python projects** — the official [Python client](https://docs.apify.com/api/client/python/docs.md): `pip install apify-client`.
- **Any other language** — the [REST API](https://docs.apify.com/api/v2.md).

For full API examples (JavaScript, Python, CLI, MCP, OpenAPI), see this Task's Actor page: https://apify.com/marielise.dev/pdf-to-mp3.md

For more details, see Apify documentation as [Markdown index](https://docs.apify.com/llms.txt) and [Markdown full-text](https://docs.apify.com/llms-full.txt).
