Hoje o único cliente do NovelAudio é o próprio app oficial, falando diretamente com o Supabase
do projeto “Novel”. Esta página descreve o contrato para uma API de parceiro de áudio.
Não existe api.novelaudio.com.br
Este é o ponto que mais gera confusão em quem lê a proposta técnica, então vale ser redundante:
NovelAI e NovelAudio são atendidos pelo mesmo domínio, api.novelai.com.br, porque compartilham
o mesmo projeto Supabase (“Novel”) e o mesmo backend físico — Postgres, Auth, Edge Functions e
Storage, tudo numa instância só. Não existe um segundo projeto, um segundo domínio ou uma segunda
infraestrutura para o NovelAudio.
A aba “NovelAudio” nesta documentação existe porque os recursos são diferentes — catálogo de
áudio, streaming de capítulo, posição de reprodução — não porque o domínio é diferente. A rota é
que decide se a chamada é sobre texto ou sobre áudio, não o host. Ver Modelo de autenticação
sobre Supabase (seção “Custom Domains”)
para o desenho completo de domínio/projeto, e a tabela de domínios em
/index.
Mesmo catálogo do NovelAI
NovelAudio espelha o grafo de narrativa do NovelAI: a mesma obra, o mesmo motor de fascículos
(1 capítulo/dia, VIP com 24h de antecedência) e os mesmos finais — só a camada de áudio é
exclusiva deste produto.
Mesmo token da Platform API
Não existe um
POST /oauth2/token próprio do NovelAudio (nem do NovelAI) — o token é emitido
uma única vez pela Platform API, com escopos novelaudio:* adicionais na mesma troca.O que a API de parceiro expõe
Metadados de áudio
GET /novels/{id}/audio — por capítulo: título, duração, voz usada (quando já renderizado) e
status de renderização.Streaming de capítulo
GET /novels/{id}/chapters/{chapterNumber}/stream — URL assinada de curta duração para um
capítulo liberado, nunca o áudio bruto na resposta.Posição de reprodução
GET/PUT /subscribers/{id}/playback-position — retomar exatamente de onde parou, entre
dispositivos.Vozes de narração (roadmap)
GET /voices — catálogo de vozes de narração para escolha do leitor. Roadmap de ponta a
ponta: não existe catálogo de vozes hoje — ver a descrição do endpoint.Como o áudio é produzido hoje
Três caminhos coexistem no código, e só um deles é o que o ouvinte do NovelAudio de fato usa:- O que o app NovelAudio realmente toca: áudio pré-gravado. A narração de cada capítulo é um
arquivo gravado uma vez e guardado no bucket privado
chapter-audiodo projeto “Novel”; o player pede uma URL assinada de curta duração à Edge Functionaudio-url, que valida o entitlement (plano com áudio + capítulo liberado pelo drip) antes de assinar. Hoje 15 novelas têm narração real completa — a flagnovels.has_real_audiocontrola quais aparecem no catálogo do app. É um arquivo único de bitrate fixo, não streaming adaptativo por segmentos. - A Edge Function de TTS server-side é do NovelAI, não do NovelAudio. O projeto “Novel” tem
uma função
tts(voz padrão única, quota por plano) — ela é consumida pelo leitor do app NovelAI para narrar texto sob demanda, não pelo player do NovelAudio. - A narração via Web Speech API do navegador é código morto. O hook existe no repositório do NovelAudio como resquício de um stand-in antigo, mas nenhuma tela o usa — a reprodução real é o caminho 1.
/subscribers/{id}/playback-position) expõe exatamente esse dado já existente.
Autenticação
Mesmo modelo OAuth2 client credentials usado pela Platform API e descrito em detalhe em Modelo de autenticação sobre Supabase — não repetido aqui. O token é emitido uma única vez, de forma centralizada, emPOST https://api.googa.com.br/v1/oauth2/token (ver Platform —
OAuth2) — nunca em api.novelai.com.br, que só valida o
token recebido via a chave pública do projeto Platform. Um parceiro que integra catálogo de texto
e áudio pede os escopos novelai:* e novelaudio:* na mesma troca de credencial, e usa o
mesmo token resultante nas chamadas a api.novelai.com.br — uma única credencial, uma única
troca, independente de quantos domínios de produto o parceiro vai chamar.