¡Nueva función! Ahora puedes probar la API sin registro usando nuestro token público.
anony_0000_public_56
Authorization: Bearer anony_0000_public_56
O como query parameter: ?token=anony_0000_public_56
Explora el código fuente, contribuye o haz fork del proyecto en GitHub
📝 Nota importante: La versión actual en el repositorio es v2.0.0 (versión anterior).
¡Próximamente se publicará la versión v2.2.0 actualizada con todas las nuevas características!
Protección activa contra amenazas y extracción masiva de datos
El plan Free tiene restricciones importantes que debes conocer:
¿Necesitas más? Considera el plan Premium para uso ilimitado.
Todos los endpoints (excepto /api/plan-comparison y /api/diagnostic) requieren un token válido.
Authorization: Bearer TU_TOKEN?token=TU_TOKENanony_0000_public_56 para pruebas iniciales sin registro.
| Código | Respuesta | Descripción |
|---|---|---|
401 |
{ "error": "Token de acceso requerido" } |
No se envió ningún token. |
401 |
{ "error": "Formato de token inválido" } |
El token tiene menos de 10 o más de 500 caracteres. |
401 |
{ "error": "Token inválido o no autorizado" } |
El token no existe en la base de datos. |
401 |
{ "error": "Cuenta desactivada" } |
La cuenta asociada al token fue desactivada. |
403 |
{ "error": "Token bloqueado por detección de scrapping", "blocked_until": "2024-12-31T23:59:59Z", "contact_admin": true } |
Token bloqueado por sistema anti-scrapping. |
500 |
{ "error": "Error de autenticación" } |
Error interno al verificar el token. |
Cuando se exceden los límites, la API responde con 429 y notifica por email automáticamente.
| Tipo de límite | Ejemplo de respuesta | Aplica a |
|---|---|---|
| Streams Diarios |
{
"error": "Límite diario de streams excedido (30/30)",
"limit_type": "daily_streams",
"current_usage": 30,
"limit": 30,
"reset_in": "23h 45m",
"upgrade_required": true
}
|
🚫 FREE 🚫 ANÓNIMO: 10/10 |
| Requests Diarios |
{
"error": "Límite diario excedido (3000/3000)",
"limit_type": "daily",
"current_usage": 3000,
"limit": 3000,
"reset_in": "23h 45m"
}
|
🚫 FREE 🚫 ANÓNIMO: 200/200 |
| Requests por Sesión |
{
"error": "Límite de sesión excedido (500/500)",
"limit_type": "session",
"current_usage": 500,
"limit": 500,
"reset_in": "59m 30s"
}
|
🚫 FREE 🚫 ANÓNIMO: 10/10 |
| Velocidad (por minuto) |
{
"error": "Límite de requests por minuto excedido",
"limit_type": "rate_limit",
"current_usage": 31,
"limit": 30,
"wait_time": 60
}
|
🚫 FREE 🚫 ANÓNIMO: 15/15 |
| Detección de Scrapping |
{
"error": "Token bloqueado por detección de scrapping",
"blocked_until": "2024-12-31T23:59:59Z",
"contact_admin": true,
"reason": "Patrón de uso anómalo detectado"
}
|
✅ Todos los planes |
GET /api/plan-comparisonCompara los planes Free y Premium.
| Código | Respuesta |
|---|---|
200 OK |
{
"success": true,
"plans": {
"free": { ... },
"premium": { ... }
}
}
|
GET /api/diagnosticVerifica estado del sistema, Firebase y variables de entorno.
| Código | Respuesta |
|---|---|
200 OK |
{
"success": true,
"system": { ... },
"security": { ... },
"endpoints_working": { ... }
}
|
GET /Información general de la API y uso actual.
| Código | Respuesta |
|---|---|
200 OK |
{
"message": "🎬 API de Streaming - 👋 ¡Bienvenido!",
"user": "usuario123",
"plan_type": "free",
"usage_limits": {
"daily_usage": "45/3000",
"session_usage": "12/500",
"daily_streams_used": "8/30",
"remaining_streams": 22,
...
},
...
}
|
| + Todas las respuestas de autenticación y límites listadas arriba. | |
GET /api/user/infoDetalles completos de tu cuenta, plan y límites actuales.
{
"success": true,
"user": {
"username": "usuario_free",
"email": "user@example.com",
"plan_type": "free",
"usage_stats": {
"daily_usage": "245/3000",
"session_usage": "45/500",
"daily_streams": "15/30", // ¡15 streams restantes!
"total_streams": 156,
"daily_reset_in": "5h 30m",
"session_reset_in": "52m 15s",
"streams_reset_in": "5h 30m"
},
"features": {
"content_access": "limited",
"streaming": true,
"download_links": false,
// ... más características
}
}
}
{
"success": true,
"user": {
"username": "usuario_premium",
"plan_type": "premium",
"usage_stats": {
"daily_usage": "1250/30000",
"session_usage": "45/2000",
"daily_streams": "Ilimitado",
"total_streams": 12560,
"daily_reset_in": "18h 22m"
},
"features": {
"content_access": "full",
"streaming": true,
"download_links": true,
"content_creation": true,
"content_editing": true,
// ... todas las características premium
}
}
}
{
"success": true,
"user": {
"username": "anonymous_user",
"plan_type": "anonymous",
"usage_stats": {
"daily_usage": "45/200",
"session_usage": "3/10",
"daily_streams": "5/10", // ¡5 streams restantes!
"total_streams": 5,
"daily_reset_in": "12h 15m",
"session_reset_in": "45m 30s",
"streams_reset_in": "12h 15m"
},
"features": {
"content_access": "limited",
"streaming": true,
"download_links": false,
"content_creation": false,
"content_editing": false
}
}
}
Exclusivo para usuarios Premium
Los usuarios Premium pueden crear y editar películas, series y canales.
POST /api/peliculas PREMIUMCrear nueva película. Requiere estructura válida según documentación.
{
"title": "Título obligatorio",
"image_url": "URL obligatoria",
"sinopsis": "Descripción",
"details": {
"year": "2024",
"genres": ["Acción", "Aventura"],
"rating": "8.5/10",
"actors": ["Actor 1", "Actor 2"],
"duration": "120 min",
"director": "Director"
},
"play_links": [
{
"server": "Server 1",
"url": "https://ejemplo.com/stream"
}
],
"type": "Anime", // Opcional
"add": "yes" // Opcional - para marcar como recién agregado
}
| Código | Respuesta |
|---|---|
201 Created |
{
"success": true,
"message": "Película creada exitosamente",
"id": "titulo-normalizado-2024",
"data": { ... }
}
|
400 Bad Request |
{
"error": "Estructura de película inválida",
"details": ["El campo 'title' es obligatorio", ...]
}
|
409 Conflict |
{
"error": "Ya existe una película con este ID",
"suggested_id": "titulo-normalizado-2024-1234567890"
}
|
403 Forbidden |
{
"error": "Esta característica no está disponible en tu plan free",
"feature_required": "content_creation",
"upgrade_required": true,
"current_plan": "free",
"required_plan": "premium"
}
|
PUT /api/peliculas/<id> PREMIUMActualizar película existente.
| Código | Respuesta |
|---|---|
200 OK |
{
"success": true,
"message": "Película actualizada exitosamente",
"id": "pelicula-id",
"data": { ... }
}
|
404 Not Found |
{ "error": "Película no encontrada" } |
403 Forbidden |
{ "error": "Esta característica no está disponible en tu plan free", ... } |
POST /api/series PREMIUMCrear nueva serie. Requiere estructura válida con temporadas y episodios.
{
"title": "Título obligatorio",
"image_url": "URL obligatoria",
"sinopsis": "Descripción",
"details": {
"year": "2024",
"genres": ["Drama", "Suspenso"],
"rating": "8.8/10",
"total_seasons": 3,
"status": "En emisión"
},
"seasons": {
"season-1": {
"season_number": 1,
"episode_count": 8,
"year": "2024",
"episodes": {
"episode-1": {
"episode_number": 1,
"title": "Capítulo 1",
"duration": "45 min",
"sinopsis": "Sinopsis del episodio",
"play_links": [
{
"server": "Server 1",
"url": "https://ejemplo.com/stream"
}
]
}
}
}
},
"type": "Anime", // Opcional
"add": "yes" // Opcional - para marcar como recién agregado
}
| Código | Respuesta |
|---|---|
201 Created |
{
"success": true,
"message": "Serie creada exitosamente",
"id": "titulo-normalizado",
"data": { ... }
}
|
400 Bad Request |
{
"error": "Estructura de serie inválida",
"details": ["El campo 'title' es obligatorio", ...]
}
|
403 Forbidden |
{ "error": "Esta característica no está disponible en tu plan free", ... } |
PUT /api/series/<id> PREMIUMActualizar serie existente.
| Código | Respuesta |
|---|---|
200 OK |
{
"success": true,
"message": "Serie actualizada exitosamente",
"id": "serie-id",
"data": { ... }
}
|
404 Not Found |
{ "error": "Serie no encontrada" } |
POST /api/canales PREMIUMCrear nuevo canal.
{
"name": "Nombre obligatorio",
"image_url": "URL obligatoria",
"status": "En vivo",
"category": "Cine",
"country": "México",
"stream_options": [
{
"option_name": "Opción 1",
"stream_url": "https://ejemplo.com/live"
}
]
}
| Código | Respuesta |
|---|---|
201 Created |
{
"success": true,
"message": "Canal creado exitosamente",
"id": "nombre-canal-normalizado",
"data": { ... }
}
|
400 Bad Request |
{
"error": "Estructura de canal inválida",
"details": ["El campo 'name' es obligatorio", ...]
}
|
403 Forbidden |
{ "error": "Esta característica no está disponible en tu plan free", ... } |
PUT /api/canales/<id> PREMIUMActualizar canal existente.
| Código | Respuesta |
|---|---|
200 OK |
{
"success": true,
"message": "Canal actualizado exitosamente",
"id": "canal-id",
"data": { ... }
}
|
404 Not Found |
{ "error": "Canal no encontrado" } |
GET /api/peliculasFree: ✅ Acceso COMPLETO a información y enlaces
Anónimo: ✅ Acceso COMPLETO a información y enlaces
Pero: 🚫 Límites de reproducción según plan
limit - Número de resultados (default: 20, max: 100)page - Página para paginación{
"success": true,
"count": 10,
"page": 1,
"limit": 10,
"plan_restrictions": true,
"data": [
{
"id": "pelicula-123",
"title": "Avengers Endgame",
"poster": "https://...",
"description": "Los Vengadores se reunen...",
"year": "2019",
"genre": "Acción, Aventura",
"play_links": [
{
"server": "Server 1",
"url": "https://stream.com/avengers" // ✅ ENLACE DISPONIBLE
}
],
"streaming_available": true
}
]
}
GET /api/peliculas/<id>Free/Anónimo: ✅ Acceso COMPLETO a información detallada y enlaces
{ "error": "Película no encontrada" }
GET /api/seriesFree/Anónimo: ✅ Acceso COMPLETO a información y enlaces
Pero: 🚫 Cada episodio cuenta como 1 stream
{
"success": true,
"count": 5,
"plan_restrictions": false,
"data": [
{
"id": "serie-456",
"title": "Stranger Things",
"poster": "https://...",
"description": "En los años 80...",
"total_seasons": 4,
"seasons": [
{
"season_number": 1,
"episode_count": 8,
"episodes": [
{
"episode_number": 1,
"title": "Capítulo 1",
"play_links": [ ... ] // ✅ ENLACES DISPONIBLES
}
]
}
]
}
]
}
GET /api/series/<id>Free/Anónimo: ✅ Acceso COMPLETO a información detallada y enlaces
GET /api/canalesFree/Anónimo: ✅ Acceso COMPLETO a información y enlaces
Pero: 🚫 Cada conexión a canal cuenta como 1 stream
GET /api/canales/<id>Free/Anónimo: ✅ Acceso COMPLETO a información detallada y enlaces
GET /api/buscar?q=terminoBúsqueda en películas, series y canales.
q - Término de búsqueda (obligatorio)limit - Límite de resultados{
"success": true,
"termino": "avengers",
"count": 3,
"search_limit": 5,
"plan_type": "free",
"data": [
{
"id": "avengers-123",
"title": "Avengers Endgame",
"tipo": "pelicula",
// ... datos completos con enlaces
}
]
}
GET /api/stream/<id>Para series: Requiere parámetros adicionales:
season - Número de temporadaepisode - Número de episodio{
"success": true,
"streaming_url": "https://ejemplo.com/stream/123",
"content_type": "pelicula",
"expires_in": 3600,
"quality": "HD",
"stream_counted": true // ✅ Se restó 1 de tu límite
}
{
"error": "Límite diario de streams excedido (30/30)",
"limit_type": "daily_streams",
"current_usage": 30,
"limit": 30,
"reset_in": "14h 22m",
"upgrade_required": true
}
GET /api/stream/serie-123?season=1&episode=2
GET /api/estadisticasEstadísticas del catálogo disponible.
{
"success": true,
"data": {
"total_peliculas": 150,
"total_series": 45,
"total_canales": 25,
"total_contenido": 195
}
}
GET /api/contenido/recientesContenido recientemente agregado (con add: "yes").
limit - Número de resultados (default: 12)GET /api/contenido/animesContenido de tipo Anime (con type: "Anime").
¿Qué es el token anónimo y para qué sirve?
Es un token público (anony_0000_public_56) que permite probar la API sin registro. Ideal para desarrolladores que quieren evaluar la API antes de crear una cuenta.
¿Puedo usar la API Free para mi aplicación?
Sí, con los nuevos límites mejorados (3,000 requests y 30 streams diarios) es más viable para aplicaciones pequeñas.
¿Los límites se reinician?
Sí, todos los límites se reinician cada 24 horas automáticamente.
¿Qué pasa si me quedo sin streams?
No podrás reproducir contenido hasta el día siguiente. Solo podrás ver información.
¿Cómo sé cuántos streams me quedan?
Usa GET /api/user/info para ver tus contadores en tiempo real.
¿Puedo ver los enlaces de streaming en el plan Free/Anónimo?
SÍ, puedes verlos, pero tendrás límites en su uso (30 para Free, 10 para Anónimo).
¿Qué cuenta como un "stream"?
Cada llamada exitosa a /api/stream/ cuenta como 1 stream, sin importar la duración.
¿Qué es el detector de scrapping?
Es un sistema de seguridad que monitorea patrones de uso anómalos y bloquea automáticamente tokens que realizan extracción masiva de datos.
¿Qué pasa si mi token es bloqueado por scrapping?
Deberás contactar al administrador para reactivación manual. No hay reactivación automática.
¿La API tiene medidas de seguridad?
SÍ, la API cuenta con una capa de seguridad integrada que protege contra amenazas críticas mientras mantiene compatibilidad con streaming. Incluye detección de scrapping, protección contra inyecciones críticas y sistema de rate limiting configurable.
¿Puedo usar el token anónimo en producción?
No recomendado. Es público y puede ser bloqueado por abuso. Para producción, obtén un token personal Free o Premium.
¿Qué ventajas tiene registrarse vs usar el token anónimo?
Registrándose obtienes: límites más generosos, soporte por email, y la posibilidad de actualizar a Premium para características avanzadas.