StormView Embed API
Intégrez le lecteur vidéo universel StormView sur vos sites partenaires via une simple balise <iframe>. Sélection automatique intelligente de la meilleure source (VF / VO), qualité adaptative et zéro maintenance backend.
Zéro Latence Backend
Lecteur 100% autonome et sécurisé hébergé sur notre infrastructure.
Auto-Switch VF / VO
Sélection transparente du meilleur flux selon la préférence demandée.
100% Responsive
S'adapte automatiquement sur desktop, tablette et smartphones.
Interactive Builder
Configurez votre contenu TMDB et visualisez le code d'intégration généré instantanément.
Votre lecteur, prêt à tester.
Choisissez vos identifiants TMDB ci-dessous puis lancez la simulation. Le code d'intégration est déjà disponible à la copie.
En attente de votre API
L'API n'est pas encore reliée. Vos codes d'intégration ci-dessous sont générés et prêts pour vos sites.
Sécurité & intégration
- Ne pas utiliser l'attribut
sandboxsur l'iframe, ou inclure au minimumallow-scripts allow-same-origin allow-popups. - Utilisez uniquement l'iframe officielle générée par StormView : les lecteurs
<video>, HLS ou MP4 maison ne sont pas pris en charge. - Le lecteur démarre automatiquement. La cadence 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 vidéo sont signées cryptographiquement et liées à la session (expiration ~15 min).
Introduction
L'API StormView Embed vous permet d'intégrer un lecteur vidéo de haute qualité hébergé sur n'importe quel site web grâce à une simple balise <iframe>. Le lecteur gère la sélection automatique des meilleures sources, le lecteur interactif et la lecture — aucun code côté serveur n'est requis de votre côté.
Quick Start
Copiez ce snippet pour intégrer un film :
<iframe src="https://votre-api.com/embed/stormview?tmdb=550&type=movie&lang=vf" width="100%" height="500" frameborder="0" allowfullscreen allow="autoplay; fullscreen; encrypted-media"> </iframe>
Pour une série TV, ajoutez les paramètres season et episode :
<iframe src="https://votre-api.com/embed/stormview?tmdb=71712&type=tv&season=1&episode=1&lang=vf" width="100%" height="500" frameborder="0" allowfullscreen allow="autoplay; fullscreen; encrypted-media"> </iframe>
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 utilisateur. L'iframe doit comporter allow="autoplay; fullscreen; encrypted-media" sans attribut sandbox restrictif.
Parameters
| Paramètre | Type | Requis | Description |
|---|---|---|---|
tmdb | integer | Oui | Identifiant TMDB officiel du contenu |
type | string | Oui | movie ou tv |
season | integer | Séries TV | Numéro de saison (défaut : 1) |
episode | integer | Séries TV | Numéro d'épisode (défaut : 1) |
lang | string | Non | vf (Français) ou vo (Version originale). Sélection automatique. |
Availability API
Vérifiez par programmation si un contenu est disponible avant de l'afficher sur votre page :
https://votre-api.com/api/embed-player/availability?tmdb=&type=&season=&episode=
Exemple de réponse JSON
{
"ok": true,
"vf": true,
"vo": false,
"available": true,
"meta": { "title": "Fight Club", "type": "movie" }
}
| Champ | Type | Description |
|---|---|---|
ok | boolean | La requête a réussi avec succès |
vf | boolean | null | Doublage français : true si confirmé, false si absent, null si non vérifié. |
vo | boolean | null | Version originale : null indique non vérifié. |
available | boolean | null | Au moins une source confirmée disponible. Ne jamais considérer null comme false. |
pending | boolean | Vérification en cours. Ne pas masquer le lecteur tant qu'un résultat n'est pas strictement false. |
should_embed | boolean | Recommandation d'affichage : true sauf en cas d'absence explicitement confirmée. |
meta | object | Métadonnées du titre (titre, type, année, etc.) |
Un code HTTP 202 ou une valeur null signifie « en cours de vérification », jamais « absent ». Ne testez pas seulement if (data.available). Masquez uniquement lorsque le champ de la langue voulue vaut strictement false.
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 conserve le lecteur : pas de faux négatif. */ }
reader.hidden = !showReader;
Sorties & calendrier
API JSON publique avec cache optimisé et accès navigateur autorisé (CORS). Dates au format standard ISO UTC ; pagination avec page et limit (100 max).
Dernières sorties référencées
https://votre-api.com/api/releases?from=2026-10-01&to=2026-10-31&type=movie&limit=30
Par défaut : 30 derniers jours triés par date décroissante. Filtres disponibles : type=movie|tv|anime.
Calendrier des épisodes annoncés
https://votre-api.com/api/calendar
Diffusions prévues pour les 7 prochains jours, avec season, episode, episode_title et date.
Format commun de réponse
{
"ok": true,
"items": [],
"total": 0,
"page": 1,
"pages": 1,
"per_page": 30,
"meta": { "date_field": "release", "timezone": "UTC" }
}
Embed URL
Modèle universel de l'URL d'intégration :
https://votre-api.com/embed/stormview?tmdb=ID&type=movie|tv&season=1&episode=1&lang=vf|vo
Exemples d'intégration
HTML classique
<!-- Film --> <iframe src="https://votre-api.com/embed/stormview?tmdb=550&type=movie&lang=vf" width="100%" height="500" frameborder="0" allowfullscreen allow="autoplay; fullscreen; encrypted-media"> </iframe> <!-- Série TV --> <iframe src="https://votre-api.com/embed/stormview?tmdb=71712&type=tv&season=1&episode=1&lang=vf" width="100%" height="500" frameborder="0" allowfullscreen allow="autoplay; fullscreen; encrypted-media"> </iframe>
Composant React
import React from 'react';
export function StormViewPlayer({ tmdb, type = 'movie', season = 1, episode = 1, lang = 'vf' }) {
const params = new URLSearchParams({ tmdb: String(tmdb), type, lang });
if (type === 'tv') {
params.set('season', String(season));
params.set('episode', String(episode));
}
const src = `https://votre-api.com/embed/stormview?${params.toString()}`;
return (
<div style={{ position: 'relative', width: '100%', aspectRatio: '16/9' }}>
<iframe
src={src}
width="100%"
height="100%"
style={{ position: 'absolute', inset: 0, border: 0 }}
allowFullScreen
allow="autoplay; fullscreen; encrypted-media"
title="StormView Player"
/>
</div>
);
}
WordPress (Shortcode PHP)
// functions.php — shortcode [stormview tmdb="550" type="movie" lang="vf"]
function stormview_embed_shortcode($atts) {
$a = shortcode_atts([
'tmdb' => '',
'type' => 'movie',
'season' => '1',
'episode' => '1',
'lang' => 'vf'
], $atts);
if (!$a['tmdb']) return '';
$params = [
'tmdb' => $a['tmdb'],
'type' => $a['type'],
'lang' => $a['lang']
];
if ($a['type'] === 'tv') {
$params['season'] = $a['season'];
$params['episode'] = $a['episode'];
}
$url = 'https://votre-api.com/embed/stormview?' . http_build_query($params);
return '<div style="position:relative;width:100%;aspect-ratio:16/9;">'
. '<iframe src="' . esc_url($url) . '" width="100%" height="100%" '
. 'style="position:absolute;inset:0;border:0;" allowfullscreen '
. 'allow="autoplay; fullscreen; encrypted-media"></iframe></div>';
}
add_shortcode('stormview', 'stormview_embed_shortcode');
Utilisation dans vos articles ou pages : [stormview tmdb="550" type="movie" lang="vf"]