Skip to main content
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:
  1. 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-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 15 novelas têm narração real completa — 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 é 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.
  3. 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.
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.