Player
Rotacionando a chave do player via API
Gere uma credencial temporária e uma URL HLS pronta para uso em um conteúdo, playlist ou canal.
A API key da conta nunca deve ser incluída em JavaScript do navegador, aplicativos distribuídos ou URLs públicas.
Endpoint
https://api.stream.goinnovation.ai/v1/player/credentials
Autentique a solicitação com a API key disponível em Ajustes > Credenciais.
Authorization: Bearer $STREAM_TOOLS_API_KEY
Content-Type: application/json
Parâmetros
| Campo | Tipo | Obrigatório | Descrição |
|---|---|---|---|
resourceType |
string | Sim | content, playlist ou channel. |
resourceID |
UUID | Sim | ID do recurso pertencente à mesma conta da API key. |
expiresInSeconds |
integer | Não | De 300 a 604800 segundos. O padrão é 3600. |
Exemplo com cURL
curl --request POST \
--url https://api.stream.goinnovation.ai/v1/player/credentials \
--header "Authorization: Bearer $STREAM_TOOLS_API_KEY" \
--header "Content-Type: application/json" \
--data '{
"resourceType": "channel",
"resourceID": "11111111-2222-4333-8444-555555555555",
"expiresInSeconds": 3600
}'
Exemplo em Node.js
const response = await fetch(
'https://api.stream.goinnovation.ai/v1/player/credentials',
{
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.STREAM_TOOLS_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
resourceType: 'channel',
resourceID: '11111111-2222-4333-8444-555555555555',
expiresInSeconds: 3600,
}),
},
)
if (!response.ok) {
throw new Error(`Falha ao gerar credencial: ${response.status}`)
}
const { data } = await response.json()
Resposta
{
"ok": true,
"data": {
"resourceType": "channel",
"resourceID": "11111111-2222-4333-8444-555555555555",
"playerKey": "eyJhbGciOi...exemplo",
"playbackURL": "https://stream.goinnovation.ai/hls/channels/11111111-2222-4333-8444-555555555555/master.m3u8?token=eyJhbGciOi...exemplo",
"issuedAt": "2026-07-27T18:00:00.000Z",
"expiresAt": "2026-07-27T19:00:00.000Z",
"renewAfter": "2026-07-27T18:48:00.000Z"
}
}
Renovação sem interrupção
- 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.
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. |