Ir al contenido

Crear un canal en vivo

POST
/v1/live/channels
curl --request POST \
--url https://api.iomza.com/v1/live/channels \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{ "name": "Sunday service", "recording": true, "dvr_minutes": 1, "standby_language": "es", "max_duration_minutes": 1, "ingest_allowed_ips": [ "example" ], "ingest_allowed_countries": [ "example" ] }'

Un canal al que transmitir desde OBS o cualquier encoder RTMP: apúntalo a ingest.url con ingest.stream_key, y los espectadores reproducen playback.hls o playback.dash (o las URLs de DVR, para rebobinar). La clave de transmisión solo se muestra aquí y al rotarla. El canal conserva su clave, su configuración y sus URLs de un evento al siguiente. Usa un fotograma clave cada segundo en el encoder.

Tipo de contenidoapplication/json
object
name
obligatorio

Para qué es el canal, para reconocerlo.

string
>= 1 caracteres <= 120 caracteres
recording

Conservar la sesión completa cuando termina: sus URLs de reproducción la reproducen entonces desde el inicio, como video bajo demanda, durante 24 horas. true por defecto; un cambio se aplica también a una transmisión en curso.

boolean
dvr_minutes

Hasta cuánto pueden rebobinar los espectadores en las URLs de DVR, en minutos (1–120). 30 por defecto. Un cambio llega a una transmisión en curso en segundos: una ventana más larga crece desde ese momento; una más corta descarta de inmediato su parte más antigua.

integer
>= 1 <= 120
standby_language

El idioma de las imágenes que ven los espectadores mientras falta la señal y al terminar la sesión: es (por defecto) o en. Un cambio llega a una transmisión al aire la próxima vez que se caiga la señal.

string
Valores permitidos: es en
max_duration_minutes

La sesión más larga, en minutos: la transmisión se detiene ahí. Hasta el evento más largo de tu plan (por defecto, el del plan). Un cambio se aplica también a una transmisión en curso, contado desde su inicio.

integer
>= 1 <= 9007199254740991
ingest_allowed_ips

Solo los encoders en estas direcciones o rangos IPv4 (CIDR) pueden transmitir a este canal: 50 como máximo. Vacío, por defecto: cualquiera. Aplica desde la próxima conexión; una transmisión en curso sigue.

Array
<= 50 elementos
ingest_allowed_countries

Solo los encoders en estos países (ISO 3166-1 alpha-2) pueden transmitir a este canal: 50 como máximo. Vacío, por defecto: cualquiera. Se rechaza una dirección cuyo país no se conozca, y los países vienen de una base de datos que puede equivocarse o evitarse con una VPN. Si también hay direcciones, el encoder debe cumplir ambas. Aplica desde la próxima conexión; una transmisión en curso sigue.

Array<string>
<= 50 elementos

El canal, con su clave de transmisión.

Tipo de contenidoapplication/json

Un canal con su clave de transmisión: solo se muestra al crear el canal o al rotar su clave.

object
id
obligatorio
string
object
obligatorio
string
Valor permitido: live_channel
name
obligatorio
string
status
obligatorio

preparing: el canal se está preparando, lo que puede tardar unos minutos; hasta entonces rechaza su encoder. idle: esperando un encoder. live: transmitiendo ahora. reconnecting: su encoder se cayó durante una transmisión y esta lo espera hasta 5 minutos (los espectadores conservan el DVR). stopped: rechaza su encoder (ver stopped_until).

string
Valores permitidos: preparing idle live reconnecting stopped
stopped_until
obligatorio

Hasta cuándo rechaza a su encoder tras detenerlo; null con status stopped: hasta que se reactive.

string | null
ingest
obligatorio
object
stream_key
obligatorio

La clave de transmisión: la “Clave de retransmisión” de OBS. Mantenla en secreto: quien la tenga puede transmitir al canal.

string
url
obligatorio

Adónde transmite el encoder, con cifrado (RTMPS): el “Servidor” de OBS.

string
rtmp_url
obligatorio

Lo mismo sin cifrado (RTMP), para encoders que no admiten RTMPS. La clave de transmisión viaja sin cifrar.

string
srt_url
obligatorio

Dónde transmite el encoder por SRT, que aguanta mejor en redes inestables: reemplaza {stream_key} por la clave de transmisión, que va en esta dirección. La clave viaja sin cifrar.

string
stream_key_hint
obligatorio

Los últimos caracteres de la clave de transmisión, para reconocerla.

string
stream_key_available
obligatorio

Si GET …/stream-key puede mostrar la clave; false en una clave antigua: rótala una vez para obtener una que se pueda mostrar.

boolean
playback
obligatorio

Desde dónde se reproduce un canal: HLS y DASH, en el borde del directo o con la ventana de DVR.

object
hls
obligatorio

HLS en el borde del directo (los últimos segundos): para reproductores que solo siguen la emisión en directo.

string
dash
obligatorio

DASH en el borde del directo.

string
dvr_hls
obligatorio

HLS con la ventana de DVR, para rebobinar (dvr_minutes).

string
dvr_dash
obligatorio

DASH con la ventana de DVR.

string
recording
obligatorio

Si las sesiones se guardan completas al terminar (las URLs de reproducción las reproducen entonces desde el principio).

boolean
dvr_minutes
obligatorio

Hasta cuánto pueden rebobinar los espectadores en las URLs de DVR, en minutos (1–120).

number
standby_language
obligatorio

El idioma de las imágenes que ven los espectadores mientras falta la señal y al terminar la sesión: es o en.

string
Valores permitidos: es en
max_duration_minutes
obligatorio

La sesión más larga, en minutos.

number
on_air_since
obligatorio

Cuándo empezó su sesión al aire; null cuando no está al aire.

string | null
ingest_allowed_ips
obligatorio

Solo los encoders en estas direcciones o rangos IPv4 pueden transmitir a él; vacío: cualquiera.

Array<string>
ingest_allowed_countries
obligatorio

Solo los encoders en estos países pueden transmitir a él; vacío: cualquiera.

Array<string>
created_at
obligatorio
string formato: date-time

Ejemplo

{
"object": "live_channel",
"status": "preparing",
"standby_language": "es"
}

Campos inválidos: details lista cada problema con su ruta.

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}

La API key falta, no es válida o está revocada.

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}

El plan no lo permite (minutos de este mes, tamaño del archivo: quota_exceeded), o el saldo se agotó y hay que recargarlo (insufficient_balance).

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}

Credenciales válidas que no pueden hacer esto (forbidden), tu plan no incluye el módulo al que pertenece la ruta (module_not_in_plan), o tu organización está suspendida (organization_suspended).

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}

Demasiadas peticiones: espera y reintenta. Lo responde la pasarela, así que el cuerpo puede ser distinto.

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}

Nuestro: reintenta, y avísanos si persiste.

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}

No disponible por un momento: reintenta en unos segundos.

Tipo de contenidoapplication/json
object
error
obligatorio
object
code
obligatorio

Estable: decide con él.

string
Valores permitidos: validation_error unauthorized quota_exceeded insufficient_balance forbidden module_not_in_plan organization_suspended not_found conflict too_many_requests internal_error service_unavailable
message
obligatorio

En inglés, para personas; puede cambiar.

string
details
obligatorio

Cada problema, como ruta: mensaje (errores de validación).

Array<string>

Ejemplo

{
"error": {
"code": "validation_error"
}
}