Envie e organize conteúdos, monte playlists, edite a agenda dos canais,
opere o playout, insira marcadores SCTE-35 e controle overlays.
Base URL
https://api.stream.goinnovation.ai/v1
Entradas não fazem parte da API pública
A ingestão e o ciclo de vida das instâncias de entrada permanecem sob
controle da interface. Saídas são expostas somente para consulta.
Envie Accept-Language: pt-BR, en ou es para mensagens e relatórios traduzidos. Os códigos de erro, identificadores e valores técnicos permanecem estáveis.
Autenticação
Use uma API key criada em Ajustes > Credenciais. A chave
herda a conta e as permissões do usuário que a criou.
Uso exclusivo no servidor
Guarde a chave em uma variável secreta como
$STREAM_TOOLS_API_KEY. Nunca a exponha no frontend.
Authorization: Bearer $STREAM_TOOLS_API_KEY continua aceito para
integrações existentes. Nunca inclua a chave no navegador ou em URLs.
Player
POST/player/credentials
Gera URLs HLS e DASH assinadas para um content,
playlist ou channel. A validade aceita é de 300 a
604800 segundos; o padrão é 3600. A seção de rotação abaixo detalha
renovação, revogação e respostas.
Conteúdos, perfis e upload
O upload é multipart e suporta metadados JSON, perfil de encoding, overlay
de encoding e associação direta a uma biblioteca.
Guarde a API key somente no backend da sua aplicação.
Solicite uma credencial antes de iniciar o player.
Agende a próxima solicitação para o instante indicado em renewAfter.
Atualize a URL HLS do player antes de expiresAt.
Para uma rotina a cada 24 horas, use uma validade maior que o intervalo,
como 172800 segundos, para preservar uma margem segura caso uma renovação
atrase. A validade máxima é de sete dias.
Rotação de segurança
A rotação da chave do player feita em Ajustes > Credenciais
faz com que novas solicitações com credenciais temporárias anteriores sejam
recusadas. Conexões já abertas podem concluir os pequenos grants de mídia
emitidos antes da rotação. Gere uma nova credencial por esta rota.
A rotação da chave do player não altera a sua API key. A API key possui
uma operação separada de rotação e revogação.
Erros
Status
Código
Quando ocorre
400
INVALID_RESOURCE_TYPE
O tipo do recurso não é suportado.
400
INVALID_EXPIRATION
A validade está fora do intervalo permitido.
401
API_KEY_INVALID
A API key não existe, foi rotacionada ou revogada.
403
PERMISSION_REQUIRED
O perfil não possui acesso a credenciais.
404
RESOURCE_NOT_FOUND
O recurso não existe, não está pronto ou pertence a outra conta.
429
RATE_LIMITED
O limite temporário de solicitações foi atingido.
Analytics
Métricas de audiência e distribuição
Consulte as mesmas métricas consolidadas do painel GoStream, limitadas à
conta da API key e com o tráfego interno da plataforma excluído.
Permissão necessária
A API key precisa possuir a permissão analytics.view. Os
recursos de outras contas nunca são retornados.
A resposta contém overview, timeline, audiência
por canal, tráfego HLS/DASH/SRT, recursos, dimensões geográficas e técnicas,
unavailableSections e o instante de retenção detalhada em
detailAvailableFrom.
Administre mídias e campanhas no backend, consulte resultados pela API e
exiba a peça como uma camada HTML acessível sobre o player quando o público pausar.
A API key nunca vai para o navegador
Seu backend usa a API key para criar uma sessão curta e vinculada à origem.
A página recebe somente essa sessão temporária e a entrega ao SDK.
Visão geral
Liste os recursos que podem receber campanhas.
Envie a imagem original e guarde o ID da mídia pronta.
Crie a campanha com agenda, frequência, alvos e pesos.
Seu backend cria uma sessão para a origem HTTPS exata da página.
O SDK posiciona a camada HTML sem reparentar nem alterar o vídeo.
Consulte impressões, cliques, duração visível e encerramentos.
O contrato completo e legível por ferramentas está em
/openapi.json.
Autenticação
Use X-API-Key no backend. Authorization: Bearer
continua aceito para integrações existentes. Toda resposta de erro possui
code estável; guarde também o request ID retornado para suporte.
Permissões: leitura usa content.view; criação e edição usam
content.upload; relatórios usam analytics.view;
sessões usam settings.credentials.
Recursos
GET/v1/pause-ads/resources
Retorna somente conteúdos, playlists e canais da conta. Filtre por
type, status e search. Listagens usam
limit de 1 a 100 e um cursor opaco; reutilize
nextCursor sem modificá-lo.
Mídias
POST/v1/pause-ads/creatives
Envie apenas o arquivo original JPEG, PNG ou WebP em multipart/form-data.
Ele deve ter proporção 16:9, pelo menos 1280×720 e no máximo 15 MiB. O GoStream
gera o WebP 1280×720 de entrega; não envie uma segunda versão otimizada.
Criações exigem Idempotency-Key de 8 a 128 caracteres. A mesma
requisição pode ser repetida por 24 horas; reutilizar a chave com outro corpo
retorna 409 IDEMPOTENCY_CONFLICT.
Campanhas
POST/v1/pause-ads/campaigns
Campanhas definem agenda, timezone, prioridade, tempo mínimo, fechamento,
cooldown, limite por sessão, pesos das mídias e alvos. Uma campanha
ACTIVE precisa ter ao menos uma mídia pronta e um alvo da conta.
Use GET /campaigns, GET /campaigns/{campaignID},
PATCH /campaigns/{campaignID} e
DELETE /campaigns/{campaignID} para o ciclo completo.
Sessões do navegador
POST/v1/pause-ads/sessions
Esta chamada acontece no seu backend. embedDomain é a origem HTTPS
exata da página, inclusive porta não padrão. A resposta dura 15 minutos e pode
ser devolvida ao navegador; ela não contém a API key.
Use a opção locale do SDK: pt-BR (padrão), en ou es. Ela traduz rótulos, acessibilidade e contagem regressiva; o texto da campanha é preservado.
SDK e HTML
A versão do módulo oficial com suporte a idiomas está em
https://docs.stream.goinnovation.ai/sdk/pause-ads-v1.js?v=20260918-i18n.
O container deve conter o vídeo e ter o mesmo tamanho visual do player.
O SDK adiciona apenas uma camada irmã; ele não envolve o vídeo, não chama
pause() e não troca src.
A camada aparece apenas depois de uma pausa deliberada e estável. O X e o
timeout mantêm o vídeo pausado; a reprodução volta somente pelo Play do próprio
player. Em fullscreen nativo do elemento video, o navegador
pode impedir overlays; prefira colocar o container em fullscreen.
Tokens permanecem apenas em memória; o SDK não usa cookies, localStorage ou IndexedDB.
Relatórios e CSV
GET/v1/pause-ads/reports
Filtre por start, end,
resourceType, resourceID, campaignID e
creativeID. O JSON retorna resumo, série, campanhas e mídias com
impressões, sessões únicas, cliques, CTR, duração visível média, fechamentos,
retomadas, no-fill e erros. A série é horária para até dois dias e diária nos
períodos maiores, com limite máximo de 89 dias.
Por API key: 600 leituras a cada 10 minutos; 120 mutações por hora;
30 uploads por hora; 120 relatórios por hora; e 6000 sessões a cada
10 minutos. Um 429 informa o tempo real em Retry-After.
Solução de problemas
Sem overlay: confirme campanha ativa, alvo, agenda, cooldown e limite da sessão.
401/403 no config: a origem deve coincidir exatamente com embedDomain e estar autorizada.
Imagem bloqueada: permita https://stream.goinnovation.ai em img-src e connect-src.
SDK bloqueado: permita https://docs.stream.goinnovation.ai em script-src e style-src.
Fullscreen: solicite fullscreen no container do player, não diretamente no vídeo.
Troca de fonte: destrua o controller ao descartar o player; uma nova montagem cria estado limpo.
Falhas do caminho publicitário são fail-open: não pausam, retomam nem trocam a
fonte do conteúdo do cliente.