Zenix Embed API
Embed the Zenix player on partner sites via a simple iframe. Auto-selects the best streaming source (VF/VO) with zero backend exposure.
Interactive Builder
Testez l'embed en direct — changez le TMDB ID et voyez le résultat immédiatement.
Sécurité & intégration
- Ne pas utiliser l'attribut
sandboxsur l'iframe, ou inclure au minimumallow-scripts allow-same-origin allow-popups. - Utilise uniquement l’iframe générée par Zenix : les lecteurs
<video>, HLS ou MP4 maison ne sont pas pris en charge. - Le lecteur démarre automatiquement. La cadence Smartlink reste gérée à l’intérieur de l’iframe, sur les interactions réelles du lecteur.
- Mode strict : définir
EMBED_FRAME_ANCESTORS_MODE=whitelistetEMBED_ALLOWED_ORIGINSsur le serveur. - Les URLs de flux sont signées et liées à la session (expiration ~15 min).
Introduction
The Zenix Embed API lets you integrate a fully-hosted video player into any website using a single <iframe> tag. The player handles source selection, Smartlink cadence and playback — no server-side code required on your end. Raw stream extraction and native-player relays are not supported.
Quick Start
Copy this snippet to embed a movie:
<iframe src="https://zenix.rest/embed/zenix?tmdb=550&type=movie&lang=vf" width="100%" height="500" frameborder="0" allowfullscreen allow="autoplay; fullscreen; encrypted-media"> </iframe>
For TV series, add season and episode:
<iframe src="https://zenix.rest/embed/zenix?tmdb=71712&type=tv&season=1&episode=1&lang=vf" width="100%" height="500" frameborder="0" allowfullscreen allow="autoplay; fullscreen; encrypted-media"> </iframe>
N'utilisez pas defer_play ni parent_gate dans l'URL embed — réservés au site Zenix. Sur votre site, utilisez uniquement l'URL ci-dessus : le lecteur démarre automatiquement et affiche son propre contrôle si un navigateur mobile exige un geste. L'iframe doit avoir allow="autoplay; fullscreen; encrypted-media" sans attribut sandbox.
Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
tmdb | integer | Yes | TMDB content ID |
type | string | Yes | movie or tv |
season | integer | TV only | Season number (default: 1) |
episode | integer | TV only | Episode number (default: 1) |
lang | string | No | vf (French) or vo (original). Auto-selects best source. |
Availability API
Check whether content is available before embedding:
https://zenix.rest/api/embed-player/availability?tmdb=&type=&season=&episode=
Response
{
"ok": true,
"vf": true,
"vo": false,
"available": true,
"meta": { "title": "Fight Club", "type": "movie" }
}
| Field | Type | Description |
|---|---|---|
ok | boolean | Request succeeded |
vf | boolean | null | French dub: true if confirmed on a source, false if absent, null if not verified. Includes confirmed S3 results. |
vo | boolean | null | Original version availability; null means not verified. |
available | boolean | null | At least one source confirmed. Never treat null as false. |
pending | boolean | Verification is incomplete. Do not hide the player solely because a source is unverified. |
should_embed | boolean | Presentation recommendation: true unless absence is confirmed. This does not claim that unknown content is available. |
availability_status | string | confirmed_available, confirmed_unavailable, unknown, or last_known_available (temporary cached evidence). |
availability_cache | object | checked_at, age_seconds and stale describe the real verification time. A positive fallback expires after 15 minutes and stays separate for every episode, language and permission context. |
sources.s3 | boolean | null | S3 evidence for the requested language and episode. Provider errors or cooldowns are unknown, not confirmed absence. |
meta | object | Content metadata (title, type, etc.) |
HTTP 202 ou null signifie « non vérifié », jamais « absent ». Ne testez pas if (data.available). Pour la langue demandée, masquez uniquement lorsque son champ vaut strictement false ; sur erreur réseau, conservez le lecteur.
let showReader = true;
try {
const response = await fetch(availabilityUrl);
if (response.ok) {
const data = await response.json();
// requestedLanguage vaut "vf" ou "vo".
showReader = data.available !== false && data[requestedLanguage] !== false;
}
} catch (_) { /* On garde le lecteur : pas de fausse absence. */ }
reader.hidden = !showReader;
Les sites déjà intégrés doivent adopter cette condition : le serveur Fluxora ne peut pas corriger à distance leur propre JavaScript. Les permissions d’accès au lecteur restent inchangées.
Embed URL
Base pattern:
https://zenix.rest/embed/zenix?tmdb=ID&type=movie|tv&season=1&episode=1&lang=vf|vo
Integration Examples
HTML
<!-- Movie --> <iframe src="https://zenix.rest/embed/zenix?tmdb=550&type=movie&lang=vf" width="100%" height="500" frameborder="0" allowfullscreen allow="autoplay; fullscreen; encrypted-media"> </iframe> <!-- TV Series --> <iframe src="https://zenix.rest/embed/zenix?tmdb=71712&type=tv&season=1&episode=1&lang=vf" width="100%" height="500" frameborder="0" allowfullscreen allow="autoplay; fullscreen; encrypted-media"> </iframe>
React
function ZenixPlayer({ tmdb, type = 'movie', season = 1, episode = 1, lang = 'vf' }) {
const params = new URLSearchParams({ tmdb, type, lang });
if (type === 'tv') { params.set('season', season); params.set('episode', episode); }
const src = `https://zenix.rest/embed/zenix?${params}`;
return (
<iframe
src={src}
width="100%" height="500"
frameBorder="0"
allowFullScreen
allow="autoplay; fullscreen; encrypted-media"
title="Zenix Player"
/>
);
}
WordPress
// functions.php — shortcode [zenix tmdb="550" type="movie" lang="vf"]
function zenix_embed_shortcode($atts) {
$a = shortcode_atts([
'tmdb' => '', 'type' => 'movie',
'season' => '1', 'episode' => '1', 'lang' => 'vf'
], $atts);
if (!$a['tmdb']) return '';
$url = 'https://zenix.rest/embed/zenix?' . http_build_query(array_filter([
'tmdb' => $a['tmdb'], 'type' => $a['type'],
'season' => $a['type'] === 'tv' ? $a['season'] : null,
'episode' => $a['type'] === 'tv' ? $a['episode'] : null,
'lang' => $a['lang']
]));
return '<iframe src="' . esc_url($url) . '" width="100%" height="500" '
. 'frameborder="0" allowfullscreen '
. 'allow="autoplay; fullscreen; encrypted-media"></iframe>';
}
add_shortcode('zenix', 'zenix_embed_shortcode');
Usage: [zenix tmdb="550" type="movie" lang="vf"]