Documentation développeurs

API Frembed

Intégrez nos films, séries et animés sur votre plateforme via nos endpoints JSON ou nos lecteurs en iframe. 100 % gratuit, aucune clé, aucune inscription : une ligne de HTML suffit.

  • Gratuit
  • Sans clé ni compte
  • ID TMDB ou IMDb
  • CORS ouvert
En ligne en 30 secondes
<iframe src="https://frembed.bar/embed/movie/27205"
  width="100%" height="500" frameborder="0" allowfullscreen
  allow="autoplay *; encrypted-media *; picture-in-picture *; fullscreen *"></iframe>
Domaine actuelfrembed.bar

Pour commencer

Démarrage rapide

Trois étapes, aucune configuration. Le lecteur s'affiche dans une iframe : rien à installer, rien à héberger.

  1. 1

    Trouvez l'identifiant

    L'ID TMDB est le nombre dans l'adresse de la fiche sur themoviedb.org : themoviedb.org/movie/27205 donne 27205. Un ID IMDb (tt1375666) marche aussi.

  2. 2

    Collez l'iframe

    Une seule ligne de HTML, à mettre là où le lecteur doit apparaître. Aucune clé, aucune inscription.

  3. 3

    C'est en ligne

    Vos visiteurs regardent dans le lecteur Frembed, avec le choix du serveur et de la version (VF, VOSTFR, VO).

Le code d'intégration classique

HTML
<iframe src="https://frembed.bar/embed/movie/27205" width="100%" height="500px" frameborder="0" allowfullscreen="yes" allow="autoplay *; encrypted-media *; picture-in-picture *; fullscreen *" scrolling="no" style="overflow:hidden;"></iframe>

Remplacez 27205 par l'ID de votre film. Pour un épisode, voir Lecteur série.

À lire une fois

Domaine actuel

Quand un domaine est bloqué par certains fournisseurs d'accès, Frembed passe sur un nouveau domaine. Tous les exemples de cette page utilisent le domaine sur lequel vous la lisez : frembed.bar.

Conseil : gardez le domaine dans une seule variable de votre site. Pour le suivre automatiquement, interrogez /api/domain depuis votre serveur : la réponse donne le domaine principal du moment.

GEThttps://frembed.bar/api/domainPas de CORS : à appeler côté serveur
<?php
// Domaine actuel de Frembed, gardé 1 heure en cache fichier.
function frembed_base(): string {
    $cache = sys_get_temp_dir() . "/frembed_domain.txt";
    if (is_file($cache) && time() - filemtime($cache) < 3600) {
        return trim(file_get_contents($cache));
    }
    $json = @file_get_contents("https://frembed.bar/api/domain");
    $data = $json ? json_decode($json, true) : null;
    if (!empty($data["domain"])) {
        $base = "https://" . $data["domain"];
        file_put_contents($cache, $base);
        return $base;
    }
    // Pas de réponse : on garde le dernier domaine connu.
    return is_file($cache) ? trim(file_get_contents($cache)) : "https://frembed.bar";
}

$src = frembed_base() . "/embed/movie/27205";
Réponse200 OK
{
  "domain": "frembed.bar",
  "status": "active",
  "timestamp": 1759392000000
}

Lecteur iframe

Lecteur film

Une URL par film, à mettre dans le src d'une iframe.

IFRAMEhttps://frembed.bar/embed/movie/{id}
  • idrequisDans le cheminID TMDB (27205) ou IMDB (tt1375666) du film.
https://frembed.bar/embed/movie/27205
https://frembed.bar/embed/movie/tt1375666
<!-- Lecteur responsive 16/9 -->
<div style="position:relative;width:100%;aspect-ratio:16/9;background:#000">
  <iframe src="https://frembed.bar/embed/movie/27205"
    style="position:absolute;inset:0;width:100%;height:100%;border:0"
    allow="autoplay *; encrypted-media *; picture-in-picture *; fullscreen *"
    allowfullscreen loading="lazy"></iframe>
</div>

Lecteur iframe

Lecteur série et animé

Une URL par épisode : l'ID de la série, puis la saison et l'épisode.

IFRAMEhttps://frembed.bar/embed/serie/{id}?sa={saison}&epi={episode}
  • idrequisDans le cheminID TMDB (1396) ou IMDB (tt0903747) de la série.
  • sarequisDans la requêteNuméro de saison.
  • epirequisDans la requêteNuméro d'épisode.

sa et epi sont obligatoires

Sans saison ni épisode, le lecteur reste vide. Pour connaître les épisodes disponibles, utilisez /api/public/v1/tv/{id}.
<!-- Lecteur responsive 16/9 -->
<div style="position:relative;width:100%;aspect-ratio:16/9;background:#000">
  <iframe src="https://frembed.bar/embed/serie/1396?sa=1&epi=1"
    style="position:absolute;inset:0;width:100%;height:100%;border:0"
    allow="autoplay *; encrypted-media *; picture-in-picture *; fullscreen *"
    allowfullscreen loading="lazy"></iframe>
</div>

Et les animés ?

Les animes utilisent les mêmes endpoints que les films (/embed/movie/{ID}) ou les séries (/embed/serie/{ID}?sa={S}&epi={E}), selon le type.

Changement d'épisode

Le visiteur peut passer à l'épisode suivant dans le lecteur. Votre page en est prévenue par un message episode_change (ci-dessous).

Être prévenu du changement d'épisode

JavaScript
// Le lecteur prévient votre page quand le visiteur change d'épisode
window.addEventListener("message", (event) => {
  const data = event.data;
  if (!data || data.type !== "episode_change") return;
  console.log("Saison", data.season, "épisode", data.episode);
  // ex. : mettre à jour le titre, l'URL ou votre liste d'épisodes
});

Message reçu : { "type": "episode_change", "season": 1, "episode": 2 }

Outil

Générateur et aperçu en direct

Saisissez un identifiant TMDB ou IMDB : vous obtenez le lien, le code HTML à intégrer et le vrai lecteur en aperçu.

Exemples :
Lien direct
https://frembed.bar/embed/movie/27205
Code HTML à coller
HTML · responsive 16/9
<div style="position:relative;width:100%;aspect-ratio:16/9;background:#000">
  <iframe src="https://frembed.bar/embed/movie/27205"
    style="position:absolute;inset:0;width:100%;height:100%;border:0"
    allow="autoplay *; encrypted-media *; picture-in-picture *; fullscreen *"
    allowfullscreen loading="lazy"></iframe>
</div>
Aperçu en direct

Choisissez un titre puis cliquez sur Afficher l'aperçu : le vrai lecteur se charge ici, exactement comme sur votre site.

L'aperçu ne se charge qu'au clic. Si un titre n'est pas encore disponible, le lecteur reste vide : vérifiez-le avant avec l'API JSON.

Intégration

Bonnes pratiques

Ce qui fait la différence entre un lecteur qui marche partout et un lecteur qui pose problème.

  • Un lecteur qui s’adapteDonnez à l'iframe width:100% et aspect-ratio:16/9 (exemple HTML ci-dessus) plutôt qu'une hauteur fixe : parfait sur mobile comme sur grand écran.
  • Gardez l’attribut allowallow="autoplay *; encrypted-media *; picture-in-picture *; fullscreen *" et allowfullscreen : sans eux, le plein écran et certaines sources ne marchent pas.
  • Pas de sandboxL'attribut sandbox est déconseillé : beaucoup d'hébergeurs vidéo le détectent et refusent de lire la vidéo.
  • Chargement différéAjoutez loading="lazy" si le lecteur est bas dans la page : il ne se charge que lorsqu'on s'en approche.
  • Vérifiez avant d’afficherUn appel à /api/public/v1/movies/{id} vous dit si le film est disponible : n'affichez le bouton « Regarder » que dans ce cas.
  • Un seul endroit pour le domaineLe domaine change parfois : une seule variable de configuration, mise à jour avec /api/domain.

Données

API JSON

Pour lister le catalogue, afficher les nouveautés ou vérifier qu'un titre est disponible. Chaque élément renvoyé contient déjà son link : l'URL du lecteur, prête à mettre dans une iframe.

URL de base

https://frembed.bar/api/public/v1

Authentification

Pas d'auth requise

Format

JSON, méthode GET

Cache

5 min (listes), 2 min (un titre)

Appelable depuis le navigateur

Les endpoints /api/public/v1 renvoient Access-Control-Allow-Origin: * : vous pouvez les appeler en JavaScript depuis n'importe quel site. GET /api/public/v1 liste les endpoints disponibles.

Liste des films

Récupère la liste paginée de tous les films disponibles. Pour les nouveautés : order=latest ; pour les derniers mis à jour : order=update.

GEThttps://frembed.bar/api/public/v1/movies
  • limitoptionDans la requêtePar défaut : 20Résultats / page (max 100)
  • pageoptionDans la requêtePar défaut : 1Numéro de page
  • orderoptionDans la requêtePar défaut : latestlatest derniers ajouts · popular les plus vus · update derniers mis à jour · year par année de sortie
curl "https://frembed.bar/api/public/v1/movies?order=latest&limit=20&page=1"
titletexte
Titre du film.
tmdb / imdbtexte
Identifiants. imdb peut valoir null.
yeartexte
Année de sortie.
qualitytexte
HD, CAM ou DVDSCR (ou null).
versiontexte
French, TrueFrench ou VostFR (ou null).
posterURL
Affiche TMDB (w780), ou null.
linkURL
URL du lecteur, prête pour l'iframe.
Réponse200 OK
{
  "status": 200,
  "result": {
    "page": 1,
    "totalPages": 214,
    "moviesPerPage": 20,
    "total": 4271,
    "items": [{
      "title": "Inception",
      "tmdb": "27205",
      "imdb": "tt1375666",
      "year": "2010",
      "quality": "HD",
      "version": "TrueFrench",
      "poster": "https://image.tmdb.org/t/p/w780/…",
      "link": "https://frembed.bar/embed/movie/27205"
    }]
  }
}
Essayer en directVraie requête, vraie réponse
GEThttps://frembed.bar/api/public/v1/movies?order=latest&limit=5&page=1

Récupérer un film

Récupère les données d'un film spécifique en passant son identifiant TMDB ou IMDB directement dans l'URL. C'est le moyen le plus simple de savoir si un film est disponible.

GEThttps://frembed.bar/api/public/v1/movies/{id}
  • idrequisDans le cheminID TMDB (27205) ou IMDB (tt1375666). Si l'ID commence par tt, la recherche s'effectue dans la colonne IMDB, et le link renvoyé utilise aussi l'ID IMDb.
curl "https://frembed.bar/api/public/v1/movies/27205"

Film introuvable = 200, pas 404

Un film absent du catalogue renvoie status: 200 avec total: 0 et une liste items vide. Testez total, pas le code HTTP.
Réponse200 OK
{
  "status": 200,
  "result": {
    "total": 1,
    "items": [{
      "title": "Inception",
      "tmdb": "27205",
      "imdb": "tt1375666",
      "year": "2010",
      "quality": "HD",
      "version": "TrueFrench",
      "poster": "https://image.tmdb.org/t/p/w780/…",
      "link": "https://frembed.bar/embed/movie/27205"
    }]
  }
}
Film absent200 OK
{
  "status": 200,
  "result": { "total": 0, "items": [] }
}
Essayer en directVraie requête, vraie réponse
GEThttps://frembed.bar/api/public/v1/movies/27205

Liste des épisodes

Récupère la liste paginée de tous les épisodes disponibles : un élément par épisode (le compteur totalSeries compte donc des épisodes). Avec order=latest, ce sont les derniers épisodes ajoutés.

GEThttps://frembed.bar/api/public/v1/tv
  • limitoptionDans la requêtePar défaut : 20Résultats / page (max 100)
  • pageoptionDans la requêtePar défaut : 1Numéro de page
  • orderoptionDans la requêtePar défaut : latestlatest derniers ajouts · popular les plus vus · year par année de sortie
curl "https://frembed.bar/api/public/v1/tv?order=latest&limit=20&page=1"
titletexte
Titre de la série.
tmdb / imdbtexte
Identifiants de la série.
yearnombre
Année.
sa / epinombre
Saison et épisode.
versiontexte
VF, VOSTFR ou VF_VOSTFR.
linkURL
URL du lecteur de l'épisode.
Réponse200 OK
{
  "status": 200,
  "result": {
    "page": 1,
    "totalPages": 850,
    "seriesPerPage": 20,
    "totalSeries": 16983,
    "items": [{
      "title": "Breaking Bad",
      "tmdb": "1396",
      "imdb": "tt0903747",
      "year": 2008,
      "sa": 1,
      "epi": 1,
      "version": "VF",
      "link": "https://frembed.bar/embed/serie/1396?sa=1&epi=1"
    }]
  }
}
Essayer en directVraie requête, vraie réponse
GEThttps://frembed.bar/api/public/v1/tv?order=latest&limit=5&page=1

Récupérer les épisodes d'une série

Récupère les épisodes d'une série en passant l'ID dans l'URL. Filtrage par saison et épisode optionnels.

GEThttps://frembed.bar/api/public/v1/tv/{id}
  • idrequisDans le cheminID TMDB ou IMDB de la série
  • saoptionDans la requêteNuméro de saison (sans = toute la série)
  • epioptionDans la requêteNuméro d'épisode (à utiliser avec sa)
  • /tv/1396Tous les épisodes
  • /tv/1396?sa=1Saison 1 complète
  • /tv/1396?sa=1&epi=1S01E01 uniquement
curl "https://frembed.bar/api/public/v1/tv/1396?sa=1&epi=1"
Avec sa, la réponse ajoute season et, selon le cas, totalEpisodes (saison entière) ou "episode number" (un épisode). Série ou épisode absent : totalItems: 0.
Réponse200 OK
{
  "status": 200,
  "result": {
    "totalItems": 1,
    "items": [{
      "title": "Breaking Bad",
      "tmdb": "1396",
      "imdb": "tt0903747",
      "year": 2008,
      "sa": 1,
      "epi": 1,
      "version": "VF",
      "link": "https://frembed.bar/embed/serie/1396?sa=1&epi=1"
    }],
    "season": "1",
    "episode number": "1"
  }
}
Essayer en directVraie requête, vraie réponse
GEThttps://frembed.bar/api/public/v1/tv/1396?sa=1

Liste des animés

Récupère la liste paginée de tous les animes (films et/ou séries TV). Une série animée n'apparaît qu'une fois.

GEThttps://frembed.bar/api/public/v1/anime
  • limitoptionDans la requêtePar défaut : 20Résultats / page (max 100)
  • pageoptionDans la requêtePar défaut : 1Numéro de page
  • orderoptionDans la requêtePar défaut : latestlatest derniers ajouts · popular les plus vus · year par année de sortie
  • typeoptionDans la requêtePar défaut : allall tout · movie films · tv séries
curl "https://frembed.bar/api/public/v1/anime?type=tv&order=popular&limit=20"
Réponse200 OK
{
  "status": 200,
  "result": {
    "page": 1,
    "totalPages": 12,
    "perPage": 20,
    "total": 230,
    "items": [{
      "type": "tv",
      "title": "Attack on Titan",
      "tmdb": "1429",
      "imdb": "tt2560140",
      "year": "2013",
      "version": "VOSTFR",
      "link": "https://frembed.bar/embed/serie/1429?sa=1&epi=1"
    }]
  }
}
Essayer en directVraie requête, vraie réponse
GEThttps://frembed.bar/api/public/v1/anime?type=all&order=latest&limit=5&page=1

Récupérer un animé

Récupère les données d'un anime par ID TMDB ou IMDB. Fonctionne pour les films et les séries, avec titre et résumé en français.

GEThttps://frembed.bar/api/public/v1/anime/{id}
  • idrequisDans le cheminID TMDB ou IMDB
  • saoptionDans la requêteNuméro de saison (sans = toute la série)
  • epioptionDans la requêteNuméro d'épisode (à utiliser avec sa)
  • /anime/1429Tous les épisodes
  • /anime/1429?sa=1Saison 1 complète
  • /anime/635302Film anime par ID TMDB
  • /anime/tt2560140Série anime par ID IMDB
curl "https://frembed.bar/api/public/v1/anime/1429?sa=1"

Ici, un titre absent renvoie 404

Contrairement aux films et séries, un ID qui n'est pas un animé disponible renvoie 404 avec "Anime not found".
{
  "status": 200,
  "result": {
    "type": "tv",
    "title_fr": "L'Attaque des Titans",
    "overview": "…",
    "overview_fr": "…",
    "totalItems": 25,
    "items": [{
      "title": "Attack on Titan",
      "tmdb": "1429",
      "imdb": "tt2560140",
      "year": 2013,
      "sa": 1,
      "epi": 1,
      "version": "VOSTFR",
      "link": "https://frembed.bar/embed/serie/1429?sa=1&epi=1"
    }],
    "season": "1",
    "totalEpisodes": 25
  }
}
Essayer en directVraie requête, vraie réponse
GEThttps://frembed.bar/api/public/v1/anime/1429?sa=1

Offre payante

Lecteur Premium (VIP)

Le lecteur VIP sert des sources directes jusqu'à la 4K, sans publicité, à vos couleurs, et ne fonctionne que sur les domaines que vous avez déclarés. Il demande un abonnement : voir les offres.

  1. 1Vérifiez la dispoAppelez /api/vip/check pour savoir si le contenu a une source VIP (afficher ou non votre bouton).
  2. 2Récupérez un jetonAppelez /api/vip/token juste avant d'afficher le lecteur. Le jeton est valable 4 à 8 minutes.
  3. 3Affichez l'iframeIntégrez /streaming?tmdb=…&t=JETON dans une iframe. C'est tout.

1. Vérifier la disponibilité

GEThttps://frembed.bar/api/vip/check
  • tmdbrequisDans la requêteID TMDB du contenu
  • typeoptionDans la requêtePar défaut : moviemovie · series · anime · collection

Répond toujours 200. available: false si le titre n'a pas de source VIP. Pour series et anime, la recherche se fait dans les deux catalogues et detectedType indique lequel a répondu, avec le nombre de saisons et d'épisodes.

curl "https://frembed.bar/api/vip/check?tmdb=550&type=movie"

2. Générer un jeton d'accès

GEThttps://frembed.bar/api/vip/token
  • tmdbrequisDans la requêteID TMDB du contenu
  • typeoptionDans la requêtePar défaut : moviemovie · series · anime : le même que dans l'iframe

Un jeton frais à chaque affichage

Le jeton expire en 4 à 8 minutes et n'est valable que pour ce tmdb et ce type. Générez-le juste avant d'afficher le lecteur : ne le mettez jamais en cache statique. Sans tmdb, la route répond 400.
curl "https://frembed.bar/api/vip/token?tmdb=550&type=movie"

3. Afficher le lecteur

IFRAMEhttps://frembed.bar/streaming?tmdb={id}&type={type}&t={jeton}
  • tmdbrequisDans la requêteID TMDB du contenu
  • typeoptionDans la requêtePar défaut : movieLe même type que pour le jeton
  • trequisDans la requêteLe jeton reçu de /api/vip/token
  • saoptionDans la requêteSaison (séries et animés)
  • epoptionDans la requêteÉpisode (séries et animés). Attention : ep ici, epi pour le lecteur gratuit.
<iframe
  src="https://frembed.bar/streaming?tmdb=550&type=movie&t=TOKEN"
  width="100%" height="540" frameborder="0" allowfullscreen
  allow="autoplay; fullscreen; encrypted-media; picture-in-picture">
</iframe>

Écran « Accès refusé » ?

Le lecteur VIP vérifie le site qui l'affiche (en-tête Referer) : il ne s'ouvre que sur un domaine déclaré et dont l'abonnement est en cours (sous-domaines compris). Il refuse aussi un jeton expiré ou fait pour un autre titre. N'ajoutez pas referrerpolicy="no-referrer" à l'iframe.

Exemple complet, côté serveur

/api/vip/check et /api/vip/token n'envoient pas d'en-têtes CORS : appelez-les depuis votre serveur. Si le titre n'a pas de source VIP, le lecteur gratuit prend le relais.

<?php
// À exécuter côté serveur, au moment d'afficher la page.
$base = "https://frembed.bar";
$tmdb = "550";
$type = "movie"; // movie, series ou anime

// 1. Le titre a-t-il une source VIP ?
$check = json_decode(file_get_contents("$base/api/vip/check?tmdb=$tmdb&type=$type"), true);

if (!empty($check["available"])) {
    // 2. Un jeton frais (valable 4 à 8 minutes)
    $token = json_decode(file_get_contents("$base/api/vip/token?tmdb=$tmdb&type=$type"), true)["token"];

    // 3. Le lecteur (pour un épisode, ajoutez &sa=1&ep=1)
    $src = "$base/streaming?tmdb=$tmdb&type=$type&t=$token";
    echo '<iframe src="' . htmlspecialchars($src) . '" width="100%" height="540" frameborder="0" allowfullscreen allow="autoplay; fullscreen; encrypted-media; picture-in-picture"></iframe>';
} else {
    // Pas de source VIP : le lecteur gratuit prend le relais
    echo '<iframe src="' . $base . '/embed/movie/' . $tmdb . '" width="100%" height="540" frameborder="0" allowfullscreen></iframe>';
}

Catalogue VIP en JSON

Liste publique des titres couverts par le lecteur VIP (sans aucun lien de flux), pour croiser notre catalogue avec le vôtre. Public, sans clé, CORS ouvert. Version visuelle : catalogue VIP.

GEThttps://frembed.bar/api/public/vip-catalog
  • typeoptionDans la requêtePar défaut : allall · movie · series · anime
  • qoptionDans la requêteRecherche dans le titre (80 caractères max)
  • sortoptionDans la requêtePar défaut : recentrecent plus récents · title ordre alphabétique
  • pageoptionDans la requêtePar défaut : 1Numéro de page
  • perPageoptionDans la requêtePar défaut : 48Résultats / page (max 100)
curl "https://frembed.bar/api/public/vip-catalog?type=movie&q=dune&page=1&perPage=48"

Chaque titre sort avec son ID TMDB (tmdb_id), à passer tel quel au lecteur.

Réponse200 OK
{
  "counts": { "movies": 3656, "series": 683, "anime": 622, "total": 4961 },
  "query": { "type": "movie", "q": "dune", "sort": "recent" },
  "page": 1,
  "perPage": 48,
  "total": 2,
  "totalPages": 1,
  "items": [{
    "type": "movie",
    "tmdb_id": "693134",
    "title": "Dune : Deuxième partie",
    "poster": "https://…",
    "year": "…",
    "runtime": "…",
    "seasons": null,
    "episodes": null,
    "genres": ["Science-Fiction", "Aventure"]
  }]
}
Essayer en directVraie requête, vraie réponse
GEThttps://frembed.bar/api/public/vip-catalog?type=all&sort=recent&perPage=5

Référence

Codes de réponse

200OKRequête réussie. Attention : un film ou une série introuvable renvoie aussi 200, avec total: 0 ou totalItems: 0.
204Pas de contenuRéponse à la pré-vérification CORS (OPTIONS), envoyée automatiquement par le navigateur.
301RedirectionAncienne URL redirigée vers la nouvelle (voir Anciennes URLs). Avec cURL, ajoutez -L pour suivre.
400Paramètre invalideValeur de order ou de type inconnue (le message liste les valeurs permises), ou tmdb manquant sur /api/vip/token.
404IntrouvableAnimé absent sur /api/public/v1/anime/{id}.
500Erreur serveurRare et passager : réessayez un peu plus tard. Le catalogue VIP répond alors { "error": "catalog_unavailable" }.

Les erreurs ont la forme { "status": 400, "message": "…" }. Les lecteurs en iframe, eux, n'ont pas de code : un titre absent laisse le lecteur vide.

Compatibilité

Anciennes URLs

Vos anciennes intégrations continuent de marcher : ces adresses redirigent (301) vers les nouvelles. Pour un nouveau site, utilisez directement les nouvelles.

/api/film.php?id={id}/embed/movie/{id}
/api/app.php?id={id}/embed/movie/{id}
/api/serie.php?id={id}&sa={S}&epi={E}/embed/serie/{id}?sa={S}&epi={E}
/api/appserie.php?id={id}&sa={S}&epi={E}/embed/serie/{id}?sa={S}&epi={E}
/api/public/v1/movies/check?id={id}/api/public/v1/movies/{id}
/api/public/v1/tv/check?id={id}&sa=&epi=/api/public/v1/tv/{id}?sa=&epi=

Aide

Questions fréquentes

Faut-il une clé API ou un compte ?

Non. Les lecteurs et l'API JSON sont publics et gratuits, sans inscription. Les endpoints JSON acceptent les appels depuis n'importe quel site.

Quelle différence entre l'API gratuite et le Premium ?

Le lecteur gratuit (/embed/…) s'utilise partout, est financé par la publicité et s'appuie sur des hébergeurs vidéo. Le lecteur Premium sert des sources directes jusqu'à la 4K, sans publicité, à vos couleurs, et seulement sur vos domaines. Voir les offres.

Le domaine a changé, mes lecteurs ne marchent plus ?

Remplacez l'ancien domaine par le nouveau dans votre variable de configuration. Pour ne plus y penser, lisez le domaine du moment avec /api/domain depuis votre serveur. Les anciennes URLs /api/film.php et /api/serie.php restent valables sur le nouveau domaine.

Comment savoir si un titre est disponible ?

Film : /api/public/v1/movies/{id} (regardez total). Épisode : /api/public/v1/tv/{id}?sa=1&epi=1 (regardez totalItems).

Puis-je utiliser un ID IMDb ?

Oui, pour les films et les séries, dans le lecteur comme dans l'API : tout ID qui commence par tt est traité comme un ID IMDb.

Le visiteur peut-il choisir VF ou VOSTFR ?

Oui, directement dans le lecteur. L'API indique la version disponible dans le champ version.

Y a-t-il une limite de requêtes ?

Il n'y a pas de quota sur l'API gratuite. Les réponses sont mises en cache de notre côté (5 minutes pour les listes, 2 minutes pour un titre) : inutile d'appeler plus souvent. Gardez aussi les résultats en cache chez vous, vos pages seront plus rapides.

Pourquoi la liste des séries renvoie des épisodes ?

/api/public/v1/tv renvoie un élément par épisode, c'est pratique pour afficher les « derniers épisodes ajoutés ». Pour toute une série, utilisez /api/public/v1/tv/{id}.

Les animés ont-ils un lecteur à part ?

Non. Un film animé utilise /embed/movie/{id}, une série animée /embed/serie/{id}?sa=&epi=. Les endpoints /anime servent seulement à lister les animés.

Besoin d'un lecteur sans pub, en 4K, à vos couleurs ?

Le lecteur Premium est réservé à vos domaines, dès 30 USD par mois.

Voir les offres

Une question qui n'est pas ici ? Écrivez-nous