Secciones de la documentación
Buscar⌘KEnlaces firmados
Tu servidor decide quién puede ver y emite un enlace al stream con caducidad. dodocast solo comprueba la firma.
Plan
Los enlaces firmados son para enlaces directos al stream y están disponibles en Pro y Business.
Clave de firma
- Ve a Settings → Signing keys → Create key.
- Guarda el secreto: se muestra una sola vez, al crear la clave. Trátalo como la contraseña de una base de datos y nunca lo envíes al navegador: firma solo en el servidor.
- La clave tiene un ID,
sk_…, que va en la cabecera del token.


Una clave revocada deja de funcionar en menos de un minuto, igual que los enlaces firmados con ella.
Token
Un JWT estándar firmado con HS256:
json
header: { "alg": "HS256", "typ": "JWT", "kid": "sk_tu_id_de_clave" }
payload: { "code": "abc123XYZ0", "iat": 1791676800, "exp": 1791678600 }codees el código del video, lista de reproducción, emisión o canal. Un token para uno no abre otro.iatyexpson obligatorios; la vida útil es de 24 horas como máximo.- Solo puedes firmar tu propio contenido.
- Usa el secreto en la firma como cadena, exactamente como te lo dio la consola.
js
// Node.js, biblioteca jsonwebtoken
import jwt from 'jsonwebtoken'
const token = jwt.sign({ code: 'abc123XYZ0' }, process.env.DODOCAST_SECRET, {
algorithm: 'HS256', keyid: 'sk_tu_id_de_clave', expiresIn: '30m',
})
const url = `https://stream.dodocast.com/s/${token}/hls/mp4/abc123XYZ0/master.m3u8`python
# Python, biblioteca PyJWT
import time, jwt
now = int(time.time())
token = jwt.encode({"code": "abc123XYZ0", "iat": now, "exp": now + 1800},
SECRET, algorithm="HS256", headers={"kid": "sk_tu_id_de_clave"})
url = f"https://stream.dodocast.com/s/{token}/hls/mp4/abc123XYZ0/master.m3u8"El Player SDK ya lo incluye: signToken(), signedStreamUrl(), signedPlaylistItemUrl() de @dodocast/player/server.
Dónde va el token
El token va en la ruta del enlace. El reproductor solicita por sí solo las variantes, los segmentos y la clave de cifrado con el mismo prefijo.
| Qué | Ruta |
|---|---|
| Video | /s/{jwt}/hls/mp4/{code}/master.m3u8 |
| Emisión | /s/{jwt}/live/mp4/{code}/index.m3u8 |
| Canal | /s/{jwt}/ch/mp4/{code}/index.m3u8 |
| Lección de un curso (token para el código de la lista de reproducción) | /public/pl/{code}/item/{itemCode}?t={jwt} |


Si un enlace devuelve 403
- firmaste contenido de otra persona: una clave solo sirve para el tuyo;
expmenosiatsupera las 24 horas;- el token tiene un campo
purpose: no debe tenerlo; - la clave fue revocada (o recreada: revisa
kid); - el reloj de tu servidor va más de 5 minutos adelantado.
Actualizado: