# API de séries TV pour les séries, les saisons et les épisodes

> L'API de séries TV renvoie une série sur GET /3/tv/{series_id} avec son statut, ses chaînes, sa liste de saisons et next_episode_to_air. Les points de terminaison de saisons et d'épisodes ajoutent dates de diffusion, durées et images. Le JSON suit TMDB v3, en 14 langues, avec des offres prépayées de 20, 40 ou 120 requêtes par minute.

## Une API de séries TV avec statut, saisons et prochain épisode

`GET /3/tv/{series_id}` renvoie une série avec son `status`, ses `networks`, sa liste `seasons`, `last_episode_to_air` et `next_episode_to_air`. Les points de terminaison de saisons et d'épisodes ajoutent des dates de diffusion, des durées et des images. amodb est une API indépendante qui parle le protocole TMDB v3 : un client écrit pour TMDB fonctionne après le changement de l'URL de base en `https://api.amodb.dev/3`.

Ce que vous obtenez :

- Des fiches de séries avec le nombre de saisons et d'épisodes, ainsi que les dates de première et de dernière diffusion.
- Une chaîne `status` et un indicateur `in_production`.
- Des chaînes avec identifiants, logos et pays d'origine.
- Un appel par saison, qui renvoie tous les épisodes de cette saison.
- Des listes de séries diffusées aujourd'hui ou dans les 7 prochains jours.

## Les données obtenues

| Besoin                      | Appel                                                                   | Champs clés                                                                                   |
| --------------------------- | ----------------------------------------------------------------------- | --------------------------------------------------------------------------------------------- |
| Fiche de série              | `GET /3/tv/{series_id}`                                                 | `name`, `original_name`, `status`, `in_production`, `number_of_seasons`, `number_of_episodes` |
| Prochain et dernier épisode | même appel                                                              | `next_episode_to_air`, `last_episode_to_air`                                                  |
| Une saison                  | `GET /3/tv/{series_id}/season/{season_number}`                          | `episodes`, `air_date`, `poster_path`                                                         |
| Un épisode                  | `GET /3/tv/{series_id}/season/{season_number}/episode/{episode_number}` | `name`, `overview`, `runtime`, `still_path`, `air_date`                                       |
| Une chaîne                  | `GET /3/network/{network_id}`                                           | `name`, `headquarters`, `origin_country`                                                      |

Les listes de champs complètes sont sur [séries TV](https://amodb.dev/fr/tv-series/) et [saisons et épisodes](https://amodb.dev/fr/tv-seasons-episodes/).

## Démarrer en 3 étapes

1. Ouvrez les [tarifs](https://amodb.dev/fr/pricing/) et choisissez l'offre dont le débit vous convient : 20, 40 ou 120 par minute.
2. Créez une clé d'API dans le tableau de bord de votre compte.
3. Envoyez `GET /3/tv/{series_id}` avec `Authorization: Bearer YOUR_API_KEY`, ou ajoutez `api_key` comme paramètre de requête.

## Exemple de requête

Le script lit Breaking Bad (id de série 1396), affiche son statut et son prochain épisode, puis liste la saison 1. Enregistrez-le sous `check.mjs` et lancez-le avec Node 18 ou plus récent.

```bash
curl -s "https://api.amodb.dev/3/tv/1396?language=en-US&append_to_response=ratings" \
  -H "Authorization: Bearer $AMODB_KEY"

curl -s "https://api.amodb.dev/3/tv/1396/season/1?language=en-US" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```js
const base = 'https://api.amodb.dev/3';
const headers = { Authorization: `Bearer ${process.env.AMODB_KEY}` };

async function get(path) {
  const res = await fetch(`${base}${path}`, { headers });
  if (!res.ok) throw new Error(`amodb returned ${res.status} for ${path}`);
  return res.json();
}

const show = await get('/tv/1396?language=en-US');
const next = show.next_episode_to_air;
console.log(`${show.name}: ${show.status}, ${show.number_of_seasons} seasons`);
console.log(next
  ? `Next: S${next.season_number}E${next.episode_number} on ${next.air_date}`
  : 'No upcoming episode is scheduled');

const season = await get('/tv/1396/season/1?language=en-US');
for (const ep of season.episodes) {
  console.log(`E${ep.episode_number} ${ep.air_date} ${ep.name}`);
}
```

Une réponse de série abrégée pour `language=en-US`. Seuls certains champs sont conservés, et `seasons` montre ses 2 premières entrées sur 6. Certains noms ne suivent pas `language` dans ces données : le nom de la saison 0 est en chinois et le `name` dans `last_episode_to_air` est en hébreu.

```json
{
  "first_air_date": "2008-01-20",
  "id": 1396,
  "in_production": false,
  "last_air_date": "2013-09-29",
  "last_episode_to_air": {
    "air_date": "2013-09-29",
    "episode_number": 16,
    "episode_type": "standard",
    "id": 62161,
    "name": "פלינה",
    "overview": "הסדרה זוכת הפרסים מגיעה לסיום דרמתי בפרק החותם אותה.",
    "production_code": "",
    "runtime": 56,
    "season_number": 5,
    "show_id": 1396,
    "still_path": "/pA0YwyhvdDXP3BEGL2grrIhq8aM.jpg",
    "vote_average": 0,
    "vote_count": 0
  },
  "name": "Breaking Bad",
  "next_episode_to_air": null,
  "number_of_episodes": 62,
  "number_of_seasons": 5,
  "original_name": "Breaking Bad",
  "seasons": [
    {
      "air_date": "2009-02-17",
      "episode_count": 9,
      "id": 3577,
      "name": "特别篇",
      "overview": "",
      "poster_path": "/ikBSCmgG5Z4jequUUAjKpf1QG3T.jpg",
      "season_number": 0,
      "vote_average": 0
    },
    {
      "air_date": "2008-01-20",
      "episode_count": 7,
      "id": 3572,
      "name": "Season 1",
      "overview": "High school chemistry teacher Walter White's life is suddenly transformed by a dire medical diagn...",
      "poster_path": "/91EIXdWxmp2mHNRsSuDW3WyDJLj.jpg",
      "season_number": 1,
      "vote_average": 0
    }
  ],
  "status": "Ended"
}
```

## Lire le statut et le prochain épisode

La chaîne `status` indique comment étiqueter une série. `next_episode_to_air` n'est un objet que pendant qu'un épisode est programmé : il vaut donc null entre deux saisons comme après la fin. Testez `status` avant d'afficher « terminée ».

| `status`         | Signification                                | Que montrer                                                           |
| ---------------- | -------------------------------------------- | --------------------------------------------------------------------- |
| Returning Series | D'autres épisodes sont attendus              | La prochaine date de diffusion si l'objet existe, sinon « de retour » |
| In Production    | En cours de fabrication, pas encore diffusée | « En production »                                                     |
| Planned          | Annoncée seulement                           | « Prévue »                                                            |
| Pilot            | Seul un pilote existe                        | « Pilote »                                                            |
| Ended            | La série est terminée                        | « Terminée » et `last_air_date`                                       |
| Canceled         | Arrêtée avant la fin prévue                  | « Annulée »                                                           |

Champs dans `next_episode_to_air` et `last_episode_to_air` : `air_date`, `season_number`, `episode_number`, `episode_type`, `id`, `show_id`, `name`, `overview`, `runtime` et `still_path`. La chaîne `status` peut aussi être vide sur quelques titres : gardez donc un libellé neutre prêt.

Les détails sont mis en cache 6 heures en périphérie : demander la même série plus de quatre fois par jour renvoie donc le même corps. Interrogez vos séries suivies une ou deux fois par jour et actualisez celle qu'un utilisateur ouvre.

## Saisons, épisodes et ce qui est diffusé

La saison 0, quand une série en a une, contient les épisodes spéciaux. Les saisons normales commencent à 1.

| Appel                                          | Renvoie                                            | Paramètres                                        |
| ---------------------------------------------- | -------------------------------------------------- | ------------------------------------------------- |
| `GET /3/tv/{series_id}/season/{season_number}` | Fiche de saison avec un tableau `episodes`         | `language`, `append_to_response`                  |
| `GET /3/tv/airing_today`                       | Les séries dont un épisode est diffusé aujourd'hui | `page`, `language`                                |
| `GET /3/tv/on_the_air`                         | Les séries diffusées la semaine à venir            | `page`, `language`                                |
| `GET /3/discover/tv`                           | Les séries filtrées par chaîne, statut et plus     | `with_networks`, `with_status`, `sort_by`, `page` |

Les listes et les résultats de discover sont mis en cache 30 minutes : une requête toutes les demi-heures suffit donc pour un badge « bientôt diffusé ». Comparez les identifiants renvoyés avec les séries que vos utilisateurs suivent. Les détails des saisons et des épisodes sont traités sur la page du [guide des épisodes](https://amodb.dev/fr/episode-guide-api/).

## Construire une liste de suivi avec des comptes à rebours

Un écran « les séries que je suis » demande un identifiant stocké par série et une petite tâche quotidienne.

1. Enregistrez l'`id` de la série quand un utilisateur la suit.
2. Une fois par jour, appelez `/3/tv/{series_id}` pour chaque identifiant suivi et stockez `status`, `next_episode_to_air` et `last_air_date`.
3. Quand `next_episode_to_air` est un objet, affichez `air_date` comme une date. Il ne porte ni heure ni fuseau horaire : ne comptez donc pas à rebours à la minute près.
4. Quand il est null et que `status` vaut Returning Series, affichez « nouvelle saison non programmée ».
5. Appelez la saison seulement quand un utilisateur ouvre la série, car c'est la plus grosse réponse.

Une réponse 404 avec `status_code` 34 signifie que l'identifiant est inconnu, et une réponse 429 signifie que vous avez dépassé vos requêtes par minute : attendez les secondes de `Retry-After`. Avec 200 séries suivies, un passage quotidien représente 200 requêtes, soit environ dix minutes à 20 requêtes par minute. Voir [limites de débit](https://amodb.dev/fr/rate-limits/) et [erreurs](https://amodb.dev/fr/errors/).

## Comparaison

| Capacité                              | Extraire les pages soi-même              | API de métadonnées avec offre gratuite | amodb                                                  |
| ------------------------------------- | ---------------------------------------- | -------------------------------------- | ------------------------------------------------------ |
| Structure des saisons et des épisodes | Reconstituée à partir de la mise en page | Variable, voir la documentation        | Appel de saison avec un tableau `episodes`             |
| Prochaine date de diffusion           | Extraite d'une page de programme         | Variable, voir la documentation        | `next_episode_to_air`, null quand rien n'est programmé |
| Statut de la série                    | Texte libre sur une page                 | Variable, voir la documentation        | Chaîne `status` et indicateur `in_production`          |
| Diffusion cette semaine               | Extraire un programme                    | Variable, voir la documentation        | `/3/tv/on_the_air` et `/3/tv/airing_today`             |
| Langues                               | Ce que propose la page                   | Variable                               | 14, choisies avec `language`                           |
| Conditions d'accès                    | Les conditions du site s'appliquent      | Offre gratuite avec conditions d'usage | Payant, prépayé, sans offre gratuite                   |

## Tarifs

Payez une fois pour 1, 3, 6, 12 ou 24 mois. Les périodes plus longues bénéficient de 10, 20, 30 ou 40 pour cent de réduction, et rien ne se renouvelle automatiquement. Chaque offre donne accès à toutes les données de séries, avec 20, 40 ou 120 requêtes par minute comme seule différence. Voir les [tarifs](https://amodb.dev/fr/pricing/), créez une clé, et votre premier appel de série ne coûte qu'une requête.

## Questions et réponses

### Comment savoir si une série est encore diffusée ?

Lisez status sur /3/tv/{id}. Returning Series signifie que d'autres épisodes sont attendus, tandis que Ended et Canceled signifient qu'il n'y en aura plus. Le champ next_episode_to_air contient le prochain épisode programmé et vaut null quand rien n'est programmé.

### Puis-je récupérer tous les épisodes d'une série en une seule requête ?

Une saison par appel. GET /3/tv/{id}/season/{n} renvoie tous les épisodes de cette saison dans un tableau episodes : une série de cinq saisons demande donc cinq appels de saison plus un appel de série.

### Que reçoit-on pour une chaîne ?

Le tableau networks d'une série liste id, name, logo_path et origin_country. GET /3/network/{id} ajoute les détails, et with_networks dans /3/discover/tv liste les séries d'une chaîne.

### Puis-je lister les séries diffusées aujourd'hui ?

Oui. /3/tv/airing_today liste les séries dont un épisode est diffusé aujourd'hui et /3/tv/on_the_air couvre les 7 prochains jours. Les deux sont paginées, acceptent language, et restent 30 minutes dans le cache de périphérie.

### Y a-t-il une offre gratuite pour l'API de séries TV ?

Ni offre gratuite ni essai. Vous payez d'avance 1, 3, 6, 12 ou 24 mois et rien ne se renouvelle tout seul. Chaque offre renvoie toutes les données, et les offres ne diffèrent que par les requêtes par minute.

## Pages liées

- [API des séries TV](https://amodb.dev/fr/tv-series/): API de séries TV aux chemins et au JSON de TMDB v3 : une série par id avec saisons, chaînes et prochain épisode, plus classifications et plateformes.
- [API des saisons et épisodes de séries TV](https://amodb.dev/fr/tv-seasons-episodes/): API de saisons et d'épisodes aux chemins et au JSON de TMDB v3. Lisez une saison avec tous ses épisodes, ou un épisode avec date de diffusion, durée et image.
- [API guide des épisodes](https://amodb.dev/fr/episode-guide-api/): API guide des épisodes avec les points de terminaison saisons et épisodes de TMDB v3 : noms, dates, durées, images et groupes d'épisodes, en 14 langues.
- [Sociétés et chaînes](https://amodb.dev/fr/companies-networks/): Sociétés de production et chaînes TV avec les chemins TMDB v3. Lisez nom, pays et logo par id, puis filtrez discover par id de société ou de chaîne.
- [Tendances et points de terminaison de listes](https://amodb.dev/fr/trending-lists/): API de tendances aux chemins TMDB v3 : classements jour et semaine, plus films et séries à l'affiche, populaires, mieux notés et à venir, cache de 30 minutes.
- [Démarrage rapide](https://amodb.dev/fr/quickstart/): Faites votre premier appel amodb : obtenez une clé, demandez un film en curl, JavaScript, Python, PHP ou Go, puis chargez l'affiche. En moins de 2 minutes.

Mis à jour: 2026-10-18. Source: https://amodb.dev/fr/tv-show-api/
