Geração

Os endpoints de geração rodam o pipeline de IA. Todos exigem o escopo generation:run e podem consumir créditos da Anthropic, Perplexity e ElevenLabs.

Gerar um esboço

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

Síncrono. Roda a etapa opcional de pesquisa com Perplexity (se estiver ativada na instância), depois pede ao modelo um esboço estruturado e cria as linhas dos capítulos a partir dele. Substitui os capítulos existentes e muda o status do livro para writing.

Retorna o livro atualizado e a lista de capítulos recém-criada. Leva ~10–60 segundos, dependendo do nível do modelo e de a pesquisa ter rodado ou não.

Escrever um capítulo (stream)

POST/v1/books/{bookId}/chapters/{chapterId}/writeescopo: generation:run

Transmite a prosa do capítulo como text/plain. Quando o stream termina, o capítulo salvo é atualizado e o status do livro avança para ready se todos os capítulos já tiverem conteúdo.

Chame os capítulos por order — o escritor lê o final do capítulo anterior para manter a continuidade.

curl -N -X POST "$ANTHRA_BASE/books/$BOOK/chapters/$CH/write" \
  -H "authorization: Bearer $ANTHRA_TOKEN"

O header de resposta x-chapter-id devolve o id do capítulo para que clientes que consomem vários streams em paralelo consigam correlacioná-los.

Reescrever um capítulo (stream)

POST/v1/books/{bookId}/chapters/{chapterId}/rewriteescopo: generation:run

Mesmo contrato de streaming de /write, mas recebe uma directive no corpo e usa a prosa atual do capítulo como fonte. O conteúdo anterior vira snapshot antes de ser sobrescrito — veja o histórico de revisões do estúdio para reverter.

curl -N -X POST "$ANTHRA_BASE/books/$BOOK/chapters/$CH/rewrite" \
  -H "authorization: Bearer $ANTHRA_TOKEN" \
  -H "content-type: application/json" \
  -d '{ "directive": "Punch up the dialogue. Cut filler. End on a hook." }'

Narrar um capítulo

POST/v1/books/{bookId}/chapters/{chapterId}/narrateescopo: generation:run

Sintetiza a narração do capítulo com ElevenLabs, envia o MP3 para o Vercel Blob e guarda a URL na linha do capítulo. A resposta é o capítulo atualizado (com audioUrl, audioStatus, audioDurationSec).

Exige ELEVENLABS_API_KEY e BLOB_READ_WRITE_TOKEN configurados na instância da Anthra; caso contrário, retorna 503 feature_disabled.