Autenticación
Autentica al usuario en el sistema y devuelve información básica del usuario y servidor.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Nombre de usuario |
| password | string | Sí | Contraseña del usuario |
Devuelve un objeto JSON con información del usuario y del servidor.
Ejemplo de respuesta exitosa:
{
"user_info": {
"auth": 1,
"status": "Active",
"username": "example_user",
"password": "password123",
"message": "Autenticación exitosa",
"exp_date": "2023-12-31",
"is_trial": 0,
"active_cons": 1,
"created_at": "2023-01-01",
"max_connections": 5,
"allowed_output_formats": ["m3u8", "ts", "rtmp"]
},
"server_info": {
"url": "example.com",
"port": 80,
"https_port": 443,
"server_protocol": "http",
"rtmp_port": 1935,
"timezone": "America/New_York",
"timestamp_now": 1621234567,
"time_now": "2023-05-17 12:34:56"
}
}
Ejemplo de respuesta fallida:
{
"user_info": {
"auth": 0,
"status": "Error de autenticación",
"username": "example_user",
"message": "Credenciales inválidas",
"exp_date": null,
"is_trial": 0,
"active_cons": 0,
"created_at": null,
"max_connections": 1,
"allowed_output_formats": ["m3u8", "ts", "rtmp"]
},
"server_info": {
"url": "",
"port": 80,
"https_port": 443,
"server_protocol": "http",
"rtmp_port": 1935,
"timezone": "UTC",
"timestamp_now": 1621234567,
"time_now": "2023-05-17 12:34:56"
}
}
- Esta petición es necesaria antes de usar cualquier otra funcionalidad de la API.
- El campo
authcon valor 1 indica autenticación exitosa. - La fecha de expiración (
exp_date) se proporciona en formato YYYY-MM-DD. - El campo
max_connectionsindica el número máximo de dispositivos que pueden conectarse simultáneamente. - El campo
active_consmuestra el número actual de conexiones activas.
Canales en Vivo
Obtiene la lista completa de canales en vivo disponibles para el usuario.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Nombre de usuario |
| password | string | Sí | Contraseña del usuario |
| action | string | Sí | Debe ser "get_live_streams" o "202" |
| category_id | integer | No | ID de categoría para filtrar canales |
Devuelve un objeto JSON con la lista de canales en vivo.
Ejemplo de respuesta:
{
"user_info": { ... },
"server_info": { ... },
"streams": [
{
"num": 1,
"name": "Canal Deportes HD",
"stream_type": "live",
"stream_id": 123,
"stream_icon": "http://example.com/images/sports.png",
"epg_channel_id": "sports.tv",
"added": "2023-01-15",
"category_id": 5,
"custom_sid": "",
"tv_archive": 1,
"direct_source": "http://source.example.com/stream.m3u8"
},
// Más canales...
]
}
- Se puede usar
category_idpara filtrar canales de una categoría específica. - El campo
tv_archiveindica si el canal soporta la función de grabación (1) o no (0). - El campo
stream_typesiempre será "live" para canales en vivo. - Para compatibilidad con versiones anteriores, la acción "202" también es válida.
Películas (VOD)
Obtiene la lista completa de películas (Video On Demand) disponibles para el usuario.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Nombre de usuario |
| password | string | Sí | Contraseña del usuario |
| action | string | Sí | Debe ser "get_vod_streams" o "203" |
| category_id | integer | No | ID de categoría para filtrar películas |
Devuelve un objeto JSON con la lista de películas.
Ejemplo de respuesta:
{
"user_info": { ... },
"server_info": { ... },
"movies": [
{
"num": 1,
"name": "El Señor de los Anillos",
"stream_type": "movie",
"stream_id": 456,
"stream_icon": "http://example.com/images/lotr.jpg",
"rating": 8.8,
"rating_5based": 4.4,
"added": "2023-02-10",
"category_id": 10,
"container_extension": "mp4",
"custom_sid": "",
"direct_source": "http://source.example.com/movie.mp4"
},
// Más películas...
]
}
- Se puede usar
category_idpara filtrar películas de una categoría específica. - El campo
stream_typesiempre será "movie" para películas. - El campo
ratinges la puntuación en escala de 10, mientras querating_5basedes la misma puntuación convertida a escala de 5. - El campo
container_extensionindica el formato del archivo (mp4, mkv, avi, etc). - Para compatibilidad con versiones anteriores, la acción "203" también es válida.
Series
Obtiene la lista completa de series disponibles para el usuario.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Nombre de usuario |
| password | string | Sí | Contraseña del usuario |
| action | string | Sí | Debe ser "get_series" o "204" |
| category_id | integer | No | ID de categoría para filtrar series |
Devuelve un objeto JSON con la lista de series.
Ejemplo de respuesta:
{
"user_info": { ... },
"server_info": { ... },
"series": [
{
"num": 1,
"name": "Breaking Bad",
"series_id": 789,
"cover": "http://example.com/images/breaking_bad.jpg",
"plot": "Un profesor de química diagnosticado con cáncer...",
"cast": "Bryan Cranston, Aaron Paul, Anna Gunn",
"director": "Vince Gilligan",
"genre": "Drama, Crimen",
"releaseDate": "2008-01-20",
"last_modified": "2023-03-15",
"rating": 9.4,
"rating_5based": 4.7,
"backdrop_path": ["http://example.com/images/breaking_bad_backdrop.jpg"],
"youtube_trailer": "HhesaQXLuRY",
"episode_run_time": 45,
"category_id": 15
},
// Más series...
]
}
- Se puede usar
category_idpara filtrar series de una categoría específica. - El campo
series_ides necesario para obtener información detallada de temporadas y episodios. - El campo
episode_run_timeindica la duración aproximada de los episodios en minutos. - El campo
youtube_trailercontiene solo el ID del video de YouTube, no la URL completa. - Para compatibilidad con versiones anteriores, la acción "204" también es válida.
Categorías
Obtiene las categorías de canales en vivo disponibles para el usuario.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Nombre de usuario |
| password | string | Sí | Contraseña del usuario |
| action | string | Sí | Debe ser "get_live_categories" |
Devuelve un array JSON con las categorías de canales en vivo.
Ejemplo de respuesta:
[
{
"category_id": "1",
"category_name": "Deportes",
"parent_id": 0
},
{
"category_id": "2",
"category_name": "Noticias",
"parent_id": 0
},
{
"category_id": "3",
"category_name": "Entretenimiento",
"parent_id": 0
}
]
- Esta información es útil para construir menús de navegación en la aplicación del cliente.
- El campo
parent_idpermite estructuras de categorías jerárquicas, pero generalmente es 0.
Obtiene las categorías de películas (VOD) disponibles para el usuario.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Nombre de usuario |
| password | string | Sí | Contraseña del usuario |
| action | string | Sí | Debe ser "get_vod_categories" |
Devuelve un array JSON con las categorías de películas.
Ejemplo de respuesta:
[
{
"category_id": "10",
"category_name": "Acción",
"parent_id": 0
},
{
"category_id": "11",
"category_name": "Comedia",
"parent_id": 0
},
{
"category_id": "12",
"category_name": "Drama",
"parent_id": 0
}
]
- El ID de categoría puede usarse para filtrar películas en la llamada a
get_vod_streams.
Obtiene las categorías de series disponibles para el usuario.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Nombre de usuario |
| password | string | Sí | Contraseña del usuario |
| action | string | Sí | Debe ser "get_series_categories" |
Devuelve un array JSON con las categorías de series.
Ejemplo de respuesta:
[
{
"category_id": "15",
"category_name": "Drama",
"parent_id": 0
},
{
"category_id": "16",
"category_name": "Ciencia Ficción",
"parent_id": 0
},
{
"category_id": "17",
"category_name": "Documentales",
"parent_id": 0
}
]
- El ID de categoría puede usarse para filtrar series en la llamada a
get_series.
Guía de Programación (EPG)
Obtiene la guía de programación completa para un canal específico.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Nombre de usuario |
| password | string | Sí | Contraseña del usuario |
| action | string | Sí | Debe ser "get_epg" |
| stream_id | integer | Sí | ID del canal |
| limit | integer | No | Número máximo de programas a devolver (por defecto: todos) |
Devuelve un objeto JSON con la programación del canal.
Ejemplo de respuesta:
{
"epg_listings": [
{
"id": "123456",
"epg_id": "sports.tv",
"title": "Partido de fútbol: Barcelona vs Real Madrid",
"lang": "es",
"start": "2023-05-17 20:00:00",
"end": "2023-05-17 22:00:00",
"description": "Partido de la liga española entre FC Barcelona y Real Madrid",
"channel_id": "123",
"start_timestamp": 1621278000,
"stop_timestamp": 1621285200
},
{
"id": "123457",
"epg_id": "sports.tv",
"title": "Post partido",
"lang": "es",
"start": "2023-05-17 22:00:00",
"end": "2023-05-17 22:30:00",
"description": "Análisis post partido con los comentaristas",
"channel_id": "123",
"start_timestamp": 1621285200,
"stop_timestamp": 1621287000
}
]
}
- Esta información es útil para mostrar la programación de un canal específico.
- Los timestamps están en formato UNIX (segundos desde el 1 de enero de 1970).
- No todos los canales tienen información EPG disponible.
EPG Resumido
Obtiene una versión resumida de la guía de programación para un canal específico.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Nombre de usuario |
| password | string | Sí | Contraseña del usuario |
| action | string | Sí | Debe ser "get_short_epg" |
| stream_id | integer | Sí | ID del canal |
| limit | integer | No | Número máximo de programas a devolver (por defecto: 4) |
Devuelve un objeto JSON con la programación resumida del canal.
Ejemplo de respuesta:
{
"epg_listings": [
{
"id": "123456",
"title": "Partido de fútbol: Barcelona vs Real Madrid",
"start": "2023-05-17 20:00:00",
"end": "2023-05-17 22:00:00",
"description": "Partido de la liga española entre FC Barcelona y Real Madrid",
"now_playing": 1,
"start_timestamp": 1621278000,
"stop_timestamp": 1621285200
},
{
"id": "123457",
"title": "Post partido",
"start": "2023-05-17 22:00:00",
"end": "2023-05-17 22:30:00",
"description": "Análisis post partido con los comentaristas",
"now_playing": 0,
"start_timestamp": 1621285200,
"stop_timestamp": 1621287000
}
]
}
- Esta versión es más ligera que
get_epgy es ideal para mostrar "Ahora y Siguiente". - El campo
now_playingindica si el programa está actualmente en emisión (1) o no (0). - Por defecto devuelve 4 programas, pero puede limitarse con el parámetro
limit.
Archivo TV
Obtiene las grabaciones disponibles para un canal con funcionalidad de Archivo TV (Catch-up).
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Nombre de usuario |
| password | string | Sí | Contraseña del usuario |
| action | string | Sí | Debe ser "get_simple_data_table" |
| stream_id | integer | Sí | ID del canal |
Devuelve un objeto JSON con la lista de grabaciones disponibles.
Ejemplo de respuesta:
{
"epg_listings": [
{
"id": "123456",
"title": "Noticias de la mañana",
"description": "Resumen de las noticias más importantes del día",
"start": "2023-05-16 08:00:00",
"end": "2023-05-16 09:00:00",
"channel_id": "123",
"start_timestamp": 1621152000,
"stop_timestamp": 1621155600,
"has_archive": 1
},
{
"id": "123457",
"title": "El tiempo",
"description": "Previsión meteorológica para los próximos días",
"start": "2023-05-16 09:00:00",
"end": "2023-05-16 09:15:00",
"channel_id": "123",
"start_timestamp": 1621155600,
"stop_timestamp": 1621156500,
"has_archive": 1
}
]
}
- Solo los canales con
tv_archive=1en la respuesta deget_live_streamstienen esta funcionalidad. - El campo
has_archiveindica si la grabación está disponible (1) o no (0). - Para reproducir una grabación, se debe construir una URL especial que incluye el timestamp de inicio.
Detalles de Stream
Obtiene información detallada sobre una película específica.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Nombre de usuario |
| password | string | Sí | Contraseña del usuario |
| action | string | Sí | Debe ser "get_vod_info" |
| vod_id | integer | Sí | ID de la película |
Devuelve un objeto JSON con información detallada de la película.
Ejemplo de respuesta:
{
"info": {
"name": "El Señor de los Anillos: La Comunidad del Anillo",
"o_name": "The Lord of the Rings: The Fellowship of the Ring",
"movie_image": "http://example.com/images/lotr_poster.jpg",
"description": "Un hobbit de la Comarca y ocho compañeros emprenden un viaje para destruir el poderoso Anillo Único y salvar la Tierra Media del Señor Oscuro Sauron.",
"releasedate": "2001-12-19",
"year": "2001",
"genre": "Aventura, Fantasía",
"cast": "Elijah Wood, Ian McKellen, Orlando Bloom",
"director": "Peter Jackson",
"duration": "178",
"rating": 8.8,
"trailer": "https://www.youtube.com/watch?v=V75dMMIW2B4"
},
"movie_data": {
"stream_id": 456,
"stream_url": "http://example.com/movies/lotr.mp4",
"container_extension": "mp4"
}
}
- Esta información es útil para mostrar detalles completos de una película antes de reproducirla.
- El campo
durationestá en minutos. - El campo
trailerproporciona la URL completa al tráiler en YouTube.
Obtiene información detallada sobre una serie específica, incluyendo temporadas y episodios.
| Parámetro | Tipo | Requerido | Descripción |
|---|---|---|---|
| username | string | Sí | Nombre de usuario |
| password | string | Sí | Contraseña del usuario |
| action | string | Sí | Debe ser "get_series_info" |
| series_id | integer | Sí | ID de la serie |
Devuelve un objeto JSON con información detallada de la serie, incluyendo temporadas y episodios.
Ejemplo de respuesta:
{
"info": {
"name": "Breaking Bad",
"cover": "http://example.com/images/breaking_bad.jpg",
"plot": "Un profesor de química diagnosticado con cáncer inoperable de pulmón recurre a la fabricación y venta de metanfetamina para asegurar el futuro de su familia.",
"cast": "Bryan Cranston, Aaron Paul, Anna Gunn",
"director": "Vince Gilligan",
"genre": "Drama, Crimen",
"releaseDate": "2008-01-20",
"last_modified": "2023-03-15",
"rating": 9.4,
"backdrop_path": ["http://example.com/images/breaking_bad_backdrop.jpg"],
"youtube_trailer": "HhesaQXLuRY",
"episode_run_time": 45
},
"episodes": {
"1": [
{
"id": "1001",
"episode_num": 1,
"title": "Piloto",
"container_extension": "mp4",
"info": {
"plot": "Un profesor de química descubre que tiene cáncer de pulmón y decide utilizar sus conocimientos para producir y vender metanfetamina.",
"duration": 58,
"releasedate": "2008-01-20"
}
},
{
"id": "1002",
"episode_num": 2,
"title": "Gato metido en la bolsa",
"container_extension": "mp4",
"info": {
"plot": "Walter y Jesse intentan deshacerse de dos cadáveres dificultando su trabajo en el proceso.",
"duration": 48,
"releasedate": "2008-01-27"
}
}
],
"2": [
{
"id": "2001",
"episode_num": 1,
"title": "Siete treinta y siete",
"container_extension": "mp4",
"info": {
"plot": "Walt y Jesse enfrentan problemas con un distribuidor de drogas local después de que Jesse le roba un alijo de droga.",
"duration": 47,
"releasedate": "2009-03-08"
}
}
]
}
}
- La estructura de
episodeses un objeto donde las claves son los números de temporada y los valores son arrays de episodios. - Cada episodio tiene un
idúnico que se utiliza para la reproducción. - El campo
durationde cada episodio está en minutos.