Skip to main content
Hoje o único cliente do NovelÁudio é 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 NovelÁudio 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 NovelÁudio. A aba “NovelÁudio” 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

NovelÁudio 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 NovelÁudio (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 NovelÁudio de fato usa:
  1. O que o app NovelÁudio realmente toca: áudio pré-gravado. A narração de cada capítulo é um arquivo gravado uma vez e guardado no bucket privado chapter-audio do projeto “Novel”; o player pede uma URL assinada de curta duração à Edge Function audio-url, que valida o entitlement (plano com áudio + capítulo liberado pelo drip) antes de assinar. Hoje 14 novelas têm narração real completa (98 arquivos — 7 capítulos cada) — a flag novels.has_real_audio controla quais aparecem no catálogo do app. É um arquivo único de bitrate fixo, não streaming adaptativo por segmentos.
  2. A Edge Function de TTS server-side existe no projeto “Novel”, mas está desativada na UI. Havia uma função tts (voz padrão única, quota por plano) consumida pelo leitor do app NovelAI para narrar texto sob demanda. Desde 30/jul/2026 essa narração foi ocultada do NovelAI por decisão de produto (NARRATION_ENABLED = false em NovelReader.tsx) — narração passou a ser exclusividade do NovelÁudio (áudio pré-gravado, caminho 1). A function ainda existe no código, só não é mais chamada por nenhuma tela.
  3. A narração via Web Speech API do navegador é código morto. O hook existe no repositório do NovelÁudio como resquício de um stand-in antigo, mas nenhuma tela o usa — a reprodução real é o caminho 1.
A posição de reprodução entre dispositivos já é real dentro do app oficial: o Supabase sincroniza capítulo atual e posição em segundos por assinante, entre qualquer dispositivo logado. A API de parceiro (/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, em POST 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.