Produção e exportação

Endpoints para arte de capa, ilustrações de capítulos, narração em lote, exportação de audiolivro e manuscrito, orçamentos de impressão e tradução. Os mesmos recursos estão disponíveis pelo servidor MCP (generate_cover_art, generate_chapter_image, narrate_book, produce_book, translate_book etc.).

Renderizar o manuscrito (EPUB / DOCX / PDF)

POST/v1/books/{bookId}/produceescopo: generation:run

EPUB e DOCX são renderizados de forma síncrona e o arquivo volta na resposta. O PDF é enviado a um fluxo de trabalho e retorna { jobId, status: "pending" } — consulte /books/{bookId}/production-jobs/{jobId} até status === "ready" e baixe de resultBlobUrl.

curl -X POST "$ANTHRA_BASE/books/$BOOK/produce" \
  -H "authorization: Bearer $ANTHRA_TOKEN" \
  -H "content-type: application/json" \
  -d '{ "format": "epub" }' \
  --output book.epub

Consultar uma tarefa de produção

GET/v1/books/{bookId}/production-jobs/{jobId}escopo: account:read

Retorna { id, status, resultBlobUrl, error, startedAt, completedAt }. Os status seguem pending → running → ready (ou failed).

Gerar arte de capa

POST/v1/books/{bookId}/cover-imageescopo: generation:run

Gera de 1 a 3 variantes de capa pelo pipeline de imagens do AI Gateway, guarda no Vercel Blob e seleciona a primeira como capa ativa. Cobra um crédito de ilustração por variante; em caso de falha parcial, reembolsa a parte não usada. O painel de contracapa e a lombada correspondentes estão abaixo.

Painéis de contracapa e lombada

POST/v1/books/{bookId}/back-coverescopo: generation:run
POST/v1/books/{bookId}/spineescopo: generation:run

Gere de 1 a 3 painéis de contracapa ou lombada para a capa completa impressa; o primeiro é selecionado para o compositor de capa usá-lo. Corpo opcional: prompt (4–800 caracteres, substitui o briefing padrão), style, aspectRatio (por exemplo "1:6") e variants (1–3). Cobra um crédito de ilustração por variante e reembolsa as que falharem. Retorna { charged, refunded, failed, images }, cada imagem com id, url, selected e o prompt usado.

Montar a capa completa pronta para impressão

POST/v1/books/{bookId}/cover/composeescopo: generation:run

Junta os painéis de capa, contracapa e lombada selecionados em uma única capa completa em PNG, dimensionada para o número estimado de páginas do livro. Composição feita só no servidor — sem chamada de modelo e sem créditos extras.

Gerar uma ilustração de capítulo

POST/v1/chapters/{chapterId}/imageescopo: generation:run

Extrai um prompt da prosa do capítulo, chama o pipeline de imagens do AI Gateway, guarda o resultado no Vercel Blob e o define como imagem principal do capítulo. Cobra um crédito de ilustração; reembolsa em caso de falha.

Traduzir um livro para outro idioma

POST/v1/books/{bookId}/translateescopo: generation:run

Clona o livro de origem em um novo rascunho (com parentBookId definido), cria os capítulos correspondentes vazios e traduz cada capítulo escrito, um após o outro. Retorna o novo bookId. Custa caro — uma chamada de LLM por capítulo. Envie um glossary (lista em Markdown) para fixar as traduções de nomes próprios e termos técnicos.

curl -X POST "$ANTHRA_BASE/books/$BOOK/translate" \
  -H "authorization: Bearer $ANTHRA_TOKEN" \
  -H "content-type: application/json" \
  -d '{ "targetLanguage": "pt-BR", "glossary": "- Marin → Marin (do not translate)" }'

Exportar um audiolivro M4B

POST/v1/books/{bookId}/audiobookescopo: generation:run

Junta todos os capítulos narrados (audioStatus: "ready") em um único M4B com marcadores de capítulo, ambientação e arte de capa, envia para uma URL do Blob impossível de adivinhar e registra uma tarefa audiobookExport. Narre os capítulos antes (POST /books/{bookId}/chapters/{chapterId}/narrate); se nenhum estiver pronto, a chamada retorna 400. Síncrono — a resposta traz o arquivo:

{ "data": { "jobId": "6c1e…", "audiobookUrl": "https://…/book.m4b", "sizeBytes": 48211022 } }

Produtos de impressão sob demanda

GET/v1/print/productsescopo: books:read

Lista os produtos de impressão da Lulu disponíveis nesta instância: key, label, blurb, trim, coverFinish, minPages e maxPages. Retorna 503 feature_disabled onde a impressão não está configurada.

Obter um orçamento de impressão

POST/v1/books/{bookId}/print/estimateescopo: analytics:read

Um orçamento somente leitura — nenhum pedido é feito. Corpo: productKey (da lista de produtos), quantity (1–500), shippingLevel (MAIL, PRIORITY_MAIL, GROUND_HD, GROUND_BUS, GROUND, EXPEDITED ou EXPRESS) e um shippingAddress no formato da Lulu. O número de páginas é estimado pela contagem de palavras do livro (são necessárias pelo menos 200 palavras).

{
  "data": {
    "productKey": "paperback-6x9-bw",
    "pageCount": 212,
    "currency": "USD",
    "wholesaleCents": 812,
    "retailCents": 1499,
    "breakdown": { "line": { … }, "shipping": { … }, "tax": "0.00", "fulfillment": { … } },
    "shippingOptions": [ … ]
  }
}

Catálogo de vozes de narração

GET/v1/voicesescopo: books:read

Lista todas as vozes da ElevenLabs disponíveis na instância com voiceId, name, previewUrl e rótulos de categoria (sotaque, gênero, idade, descrição, useCase). Use o id da voz ao configurar a narração.