V.1 — API gratuita de películas y series

API de Películas
y Series

Gratuita, sin registro y lista para embeber. Siempre en la mejor calidad con soporte para subtítulos y múltiples idiomas.

Películas
CLÁSICOS & BLOCKBUSTERS
Series
CATÁLOGO GLOBAL
Episodios
METADATA & STREAM

Prueba el reproductor

Busca una película o serie y reproduce al instante.

URLs aceptadas: api.tonplayer.space/play/movie/{id} o api.tonplayer.space/play/tv/{id}/{temp}/{ep}


Documentación

Integra TONPlayer con una sola línea. Sin API keys, sin registro.

Setup en segundos
Sin API keys ni registro. Solo el ID de TMDB y listo.
Compatible con TMDB
Usa los IDs de The Movie Database directamente.
Películas y Series
Soporte para temporadas y episodios completos.
Actualizaciones rápidas
Videos caídos se reemplazan en menos de 24h.

Inicio rápido

Obtén el ID de TMDB de tu película o serie y úsalo en un iframe. Sin registro.

Base URL
api.tonplayer.space
Protocolo
HTTPS
Auth
Sin API key
HTML
<!-- Película --> <iframe src="https://api.tonplayer.space/play/movie/299534" width="100%" height="500" allowfullscreen></iframe> <!-- Serie T1E1 --> <iframe src="https://api.tonplayer.space/play/tv/1396/1/1" width="100%" height="500" allowfullscreen></iframe>

Películas

Endpoint para embeber películas por ID de TMDB.

GETapi.tonplayer.space/play/movie/{id}
ParámetroTipoDescripción
idrequeridointegerID TMDB de la película
URLs
https://api.tonplayer.space/play/movie/550 # Fight Club https://api.tonplayer.space/play/movie/299534 # Avengers: Endgame https://api.tonplayer.space/play/movie/157336 # Interstellar

Series

Endpoint para series con soporte de temporadas y episodios.

GETapi.tonplayer.space/play/tv/{id}/{temp}/{ep}
ParámetroTipoDescripción
idrequeridointegerID TMDB de la serie
tempopcionalintegerNúmero de temporada (default: 1)
epopcionalintegerNúmero de episodio (default: 1)
URLs
https://api.tonplayer.space/play/tv/1396/1/1 # Breaking Bad T1E1 https://api.tonplayer.space/play/tv/1399/3/9 # Game of Thrones T3E9 https://api.tonplayer.space/play/tv/94997/1/1 # House of the Dragon T1E1

Ejemplos

Integración en distintos frameworks.

React / JSX
const TonPlayer = ({ id, tm, ep }) => ( <iframe src={`https://api.tonplayer.space/play/${tm ? 'tv' : 'movie'}/${id}${tm ? `/${tm}/${ep||1}` : ''}`} width="100%" height="500" allowFullScreen /> );
Python / Jinja2
<iframe src="https://api.tonplayer.space/play/movie/{{ movie_id }}" width="100%" height="500" allowfullscreen ></iframe>

Errores comunes

Soluciones rápidas a los problemas más frecuentes.

ERRVideo no carga / pantalla negra

Verifica que el ID de TMDB sea correcto. Si persiste, el video puede estar caído temporalmente — se actualiza en menos de 24h.

ERRiframe bloqueado / CORS

Agrega allow="autoplay; fullscreen" al tag iframe.

ERRSerie carga como película

Usa /play/tv/ para series y /play/movie/ para películas.


enrichAndRender(); } function filterCatalog() { if (!catAll.length) return; catPage=0; enrichAndRender(); } function showMore() { catPage++; enrichAndRender(); } function playCatalogItem(tmdbId, tipo) { curType=tipo; document.querySelectorAll('.tab').forEach((b,i) => { const active=(tipo==='movie'&&i===0)||(tipo==='tv'&&i===1); b.classList.toggle('is-active',active); b.setAttribute('aria-selected',active); }); document.getElementById('seasonField').classList.toggle('hidden',tipo!=='tv'); document.getElementById('epField').classList.toggle('hidden',tipo!=='tv'); document.getElementById('tmdbId').value=tmdbId; const m=catMeta[tmdbId]; if (m) { document.getElementById('selTitle').textContent=m.title; document.getElementById('selMeta').textContent=`${tipo==='tv'?'Serie':'Película'} · ${m.year} · ID: ${tmdbId} · ✓ En catálogo`; const img=document.getElementById('selPoster'); if(m.poster){img.src=m.poster;img.style.display='block';}else img.style.display='none'; document.getElementById('selBanner').classList.add('is-visible'); } document.getElementById('player').scrollIntoView({ behavior:'smooth' }); setTimeout(loadPlayer,400); } new IntersectionObserver(([e]) => { if(e.isIntersecting&&catAll.length===0) loadCatalog(); }, { threshold:.1 }) .observe(document.getElementById('catalogo')); /* ════ DOCS ════ */ function showDoc(id, btn) { document.querySelectorAll('.doc-panel').forEach(p=>p.classList.remove('is-visible')); document.querySelectorAll('.docs-btn').forEach(b=>{b.classList.remove('is-active');b.removeAttribute('aria-selected');}); document.getElementById('doc-'+id).classList.add('is-visible'); btn.classList.add('is-active'); btn.setAttribute('aria-selected','true'); } function copyCode(btn) { const text = btn.closest('.codeblock').querySelector('.codeblock__body').innerText; navigator.clipboard.writeText(text.trim()).then(() => { btn.innerHTML=' Copiado'; setTimeout(()=>btn.innerHTML=' Copiar',1600); }); } /* ════ MOBILE MENU ════ */ (function() { const burger = document.getElementById('navBurger'); const drawer = document.getElementById('navDrawer'); const backdrop= document.getElementById('navBackdrop'); const closeBtn= document.getElementById('navClose'); if (!burger || !drawer) return; function openMenu() { drawer.classList.add('is-open'); burger.setAttribute('aria-expanded', 'true'); document.body.style.overflow = 'hidden'; closeBtn.focus(); } function closeMenu() { drawer.classList.remove('is-open'); burger.setAttribute('aria-expanded', 'false'); document.body.style.overflow = ''; burger.focus(); } burger.addEventListener('click', openMenu); closeBtn.addEventListener('click', closeMenu); backdrop.addEventListener('click', closeMenu); // Close on ESC document.addEventListener('keydown', e => { if (e.key === 'Escape' && drawer.classList.contains('is-open')) closeMenu(); }); // Close on nav link click (same-page anchors) drawer.querySelectorAll('.nav__drawer-link').forEach(link => { if (link.getAttribute('href')?.startsWith('#')) { link.addEventListener('click', closeMenu); } }); })();