# Sociétés et chaînes

> Les points de terminaison de sociétés et de chaînes renvoient le nom, le pays d'origine et le chemin du logo d'un studio ou d'une chaîne de télévision par id, sur GET /3/company/{company_id} et GET /3/network/{network_id}. Chemins et JSON suivent TMDB v3. Passez les ids à with_companies et with_networks dans discover pour lister leurs titres.

## Point de terminaison

`GET /3/company/{company_id}`

```bash
curl "https://api.amodb.dev/3/company/25" \
  -H "Authorization: Bearer $AMODB_KEY"
```

Réponse:

```json
{
  "description": "",
  "headquarters": "",
  "homepage": "",
  "id": 25,
  "logo_path": "/nM2MfoMqzJQRiSynsDabOtFKetD.png",
  "name": "20th Century Fox",
  "origin_country": "US",
  "parent_company": null
}
```

## Obtenir les détails d'une société

`GET /3/company/{company_id}` renvoie une société de production : nom, pays d'origine et chemin du logo. Il porte aussi `description`, `headquarters`, `homepage` et `parent_company`, mais amodb les laisse vides. L'identifiant est l'identifiant de société TMDB : les identifiants que vous avez stockés plus tôt continuent donc de fonctionner.

L'exemple ci-dessous lit la première société de production du film 550 puis charge cette société.

```bash
COMPANY_ID=$(curl -sf "https://api.amodb.dev/3/movie/550" \
  -H "Authorization: Bearer $AMODB_KEY" | jq '.production_companies[0].id')
curl -sf "https://api.amodb.dev/3/company/$COMPANY_ID" \
  -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 movie = await get('/movie/550');
const company = await get(`/company/${movie.production_companies[0].id}`);
console.log(company.name, company.origin_country, company.logo_path);
```

```python
import os
import requests

BASE = "https://api.amodb.dev/3"
HEADERS = {"Authorization": f"Bearer {os.environ['AMODB_KEY']}"}


def get(path):
    r = requests.get(BASE + path, headers=HEADERS, timeout=10)
    r.raise_for_status()
    return r.json()


movie = get("/movie/550")
company = get(f"/company/{movie['production_companies'][0]['id']}")
print(company["name"], company["origin_country"], company["logo_path"])
```

```php
<?php
function amodb_get(string $path): array {
    $ch = curl_init('https://api.amodb.dev/3' . $path);
    curl_setopt_array($ch, [
        CURLOPT_RETURNTRANSFER => true,
        CURLOPT_TIMEOUT => 10,
        CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('AMODB_KEY')],
    ]);
    $body = curl_exec($ch);
    $status = curl_getinfo($ch, CURLINFO_HTTP_CODE);
    curl_close($ch);
    if ($status !== 200) {
        throw new RuntimeException("amodb returned $status for $path");
    }
    return json_decode($body, true);
}

$movie = amodb_get('/movie/550');
$company = amodb_get('/company/' . $movie['production_companies'][0]['id']);
echo $company['name'], ' ', $company['origin_country'], PHP_EOL;
```

```go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"os"
	"time"
)

var client = &http.Client{Timeout: 10 * time.Second}

func get(path string, out any) error {
	req, err := http.NewRequest("GET", "https://api.amodb.dev/3"+path, nil)
	if err != nil {
		return err
	}
	req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
	res, err := client.Do(req)
	if err != nil {
		return err
	}
	defer res.Body.Close()
	if res.StatusCode != http.StatusOK {
		return fmt.Errorf("amodb returned %s for %s", res.Status, path)
	}
	return json.NewDecoder(res.Body).Decode(out)
}

func main() {
	var movie struct {
		Companies []struct {
			ID int `json:"id"`
		} `json:"production_companies"`
	}
	if err := get("/movie/550", &movie); err != nil || len(movie.Companies) == 0 {
		panic("movie has no production companies")
	}
	var company struct {
		Name          string `json:"name"`
		OriginCountry string `json:"origin_country"`
	}
	if err := get(fmt.Sprintf("/company/%d", movie.Companies[0].ID), &company); err != nil {
		panic(err)
	}
	fmt.Println(company.Name, company.OriginCountry)
}
```

### Paramètres

| Paramètre    | Dans    | Requis        | Description                                                  |
| ------------ | ------- | ------------- | ------------------------------------------------------------ |
| `company_id` | chemin  | oui           | Identifiant numérique de la société, par exemple `25`.       |
| `api_key`    | requête | l'un des deux | Votre clé. Utilisez-la ou l'en-tête `Authorization: Bearer`. |

### Champs de la réponse

| Champ            | Type           | Remarques                                                |
| ---------------- | -------------- | -------------------------------------------------------- |
| `description`    | chaîne         | Toujours une chaîne vide.                                |
| `headquarters`   | chaîne         | Ville ou région. Vide pour la plupart des sociétés.      |
| `homepage`       | chaîne         | Adresse du site web. Vide pour la plupart des sociétés.  |
| `id`             | entier         | Identifiant de la société.                               |
| `logo_path`      | chaîne ou null | À ajouter à `https://img.amodb.dev/t/p/{size}`.          |
| `name`           | chaîne         | Nom de la société.                                       |
| `origin_country` | chaîne         | Code ISO 3166-1 comme `US`. Peut être vide.              |
| `parent_company` | null           | Toujours `null`. amodb ne renseigne pas la société mère. |

### Exemple de réponse

```json
{
  "description": "",
  "headquarters": "",
  "homepage": "",
  "id": 25,
  "logo_path": "/nM2MfoMqzJQRiSynsDabOtFKetD.png",
  "name": "20th Century Fox",
  "origin_country": "US",
  "parent_company": null
}
```

La même forme revient pour chaque identifiant de société, par exemple `/3/company/1` pour Lucasfilm.

## Obtenir les détails d'une chaîne

`GET /3/network/{network_id}` renvoie une chaîne de télévision : nom, pays d'origine, chemin du logo, `headquarters` et `homepage`. Il n'a ni `description` ni `parent_company`. Lisez l'identifiant d'une chaîne dans le tableau `networks` d'une série. La série `/3/tv/1399` liste HBO avec l'id 49.

```json
{
  "headquarters": "",
  "homepage": "",
  "id": 49,
  "logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
  "name": "HBO",
  "origin_country": "US"
}
```

| Champ            | Type           | Remarques                                                                               |
| ---------------- | -------------- | --------------------------------------------------------------------------------------- |
| `headquarters`   | chaîne         | Vide pour la plupart des chaînes.                                                       |
| `homepage`       | chaîne         | Vide pour la plupart des chaînes.                                                       |
| `id`             | entier         | Identifiant de la chaîne.                                                               |
| `logo_path`      | chaîne ou null | Chemin du fichier du logo.                                                              |
| `name`           | chaîne         | Nom de la chaîne.                                                                       |
| `origin_country` | chaîne         | Code ISO 3166-1. Une chaîne vide pour les services de streaming mondiaux comme Netflix. |

## Points de terminaison de ce groupe

Tous les chemins partagent la base `https://api.amodb.dev/3` et la même authentification que les autres points de terminaison.

| Méthode et chemin           | Renvoie                                                                    | Paramètres      |
| --------------------------- | -------------------------------------------------------------------------- | --------------- |
| `GET /company/{company_id}` | Fiche de société                                                           | `company_id`    |
| `GET /network/{network_id}` | Fiche de chaîne                                                            | `network_id`    |
| `GET /search/company`       | Liste paginée de sociétés avec `id`, `name`, `logo_path`, `origin_country` | `query`, `page` |

amodb ne propose pas les chemins `alternative_names` ou `images` pour les sociétés et les chaînes. Le logo est le `logo_path` de la fiche elle-même.

### Logos

Construisez l'adresse du logo comme `https://img.amodb.dev/t/p/w185` plus `logo_path`. `GET /3/configuration` liste les tailles de logos : `w92`, `w154`, `w185`, `w300`, `w500` et `original`. La page [images](https://amodb.dev/fr/images-api/) contient le tableau complet des tailles. Les fichiers de logos sont surtout en PNG, et les fichiers d'images n'exigent aucune clé. Une société sans logo a `logo_path` à `null`.

## Filtrer discover par société ou par chaîne

Les identifiants de sociétés et de chaînes sont surtout utiles comme filtres. Discover transforme un identifiant en liste de titres.

| Filtre           | Fonctionne sur                      | Signification                                                       |
| ---------------- | ----------------------------------- | ------------------------------------------------------------------- |
| `with_companies` | `/discover/movie` et `/discover/tv` | Titres réalisés par ces sociétés.                                   |
| `with_networks`  | `/discover/tv`                      | Séries diffusées par ces chaînes. Discover pour les films l'ignore. |

Séparez plusieurs identifiants par une virgule pour les exiger tous, ou par une barre verticale (encodée `%7C`) pour en accepter n'importe lequel. L'appel ci-dessous liste les films d'une société, triés par popularité. Le second appel liste les séries diffusées par HBO.

```bash
curl -sf "https://api.amodb.dev/3/discover/movie?with_companies=$COMPANY_ID&sort_by=popularity.desc&page=1" \
  -H "Authorization: Bearer $AMODB_KEY"

curl -sf "https://api.amodb.dev/3/discover/tv?with_networks=49&sort_by=popularity.desc" \
  -H "Authorization: Bearer $AMODB_KEY"
```

Les résultats de discover sont mis en cache 30 minutes en périphérie et arrivent par pages de 20. La liste complète des filtres est sur la page [découverte](https://amodb.dev/fr/discover/).

## Trouver une société par son nom

`GET /3/search/company?query=lucasfilm` renvoie une liste paginée. Chaque ligne a `id`, `logo_path`, `name` et `origin_country`. Les lignes ne sont pas classées par correspondance exacte : le studio appelé `Lucasfilm Ltd.` a l'id 1 et se trouve en troisième ligne, après deux noms proches. Comparez `name` et `origin_country` avant de prendre un identifiant. Les règles de requête sont sur la page [recherche](https://amodb.dev/fr/search/). Il n'existe pas de chemin de recherche de chaînes.

## Erreurs

Une société ou une chaîne qui n'existe pas renvoie le corps d'erreur TMDB avec `status_code` 34. Les autres échecs utilisent le même corps.

| HTTP | status_code | Quand                                                                                     |
| ---- | ----------- | ----------------------------------------------------------------------------------------- |
| 401  | 7           | La clé est absente ou fausse.                                                             |
| 402  | 36          | La période de l'offre est terminée.                                                       |
| 404  | 34          | Aucune société ni chaîne avec cet identifiant, ou un identifiant qui n'est pas un nombre. |
| 405  | 37          | Vous avez envoyé une méthode d'écriture.                                                  |
| 429  | 25          | Au-dessus de vos requêtes par minute. Attendez les secondes de `Retry-After`.             |

Voir [erreurs](https://amodb.dev/fr/errors/) pour la liste complète et [limites de débit](https://amodb.dev/fr/rate-limits/) pour les en-têtes.

## Remarques pratiques

- Stockez l'`id` de la société à côté du nom. Les noms changent, pas les identifiants.
- Vérifiez que `logo_path` n'est pas `null` avant de l'afficher. Ne comptez pas sur `homepage`, `headquarters` ou `description`, car ils sont vides.
- Les détails des sociétés et des chaînes sont mis en cache 6 heures en périphérie. Les fichiers de logos sur `img.amodb.dev` sont mis en cache 30 jours.
- Une chaîne est un concept de télévision. Pour obtenir ses séries, utilisez `with_networks` sur `/discover/tv`, pas sur discover pour les films.
- Pour trouver une société par son nom, utilisez la recherche de sociétés ci-dessus, puis choisissez la bonne ligne par `name` et `origin_country`.

## Questions et réponses

### Où obtenir un identifiant de société ou de chaîne ?

Lisez-les dans les titres que vous avez déjà récupérés. Un film liste production_companies, et une série liste networks et production_companies. Chaque entrée porte l'identifiant numérique qu'acceptent les points de terminaison de sociétés et de chaînes.

### Puis-je lister tous les films d'une société ?

Utilisez discover avec le filtre with_companies. Passez l'identifiant de la société et parcourez les pages de résultats. Ajoutez with_networks sur discover pour les séries afin de lister les séries diffusées par une chaîne.

### Les fichiers de logos sont-ils derrière la clé d'API ?

Non. Le JSON qui contient le chemin du logo exige votre clé, mais les fichiers de img.amodb.dev n'exigent aucune clé et sont mis en cache 30 jours.

### Comment trouver une société par son nom ?

Appelez GET /3/search/company?query=lucasfilm. Les lignes ne sont pas classées par correspondance exacte : comparez name et origin_country et prenez l'id de la bonne ligne. Il n'y a pas de recherche de chaînes, donc lisez les identifiants de chaînes dans une série.

## Pages liées

- [API de détails de film](https://amodb.dev/fr/movies/): API de détails de film aux chemins et au JSON de TMDB v3. Obtenez un film par id, ajoutez crédits, notes et ambiances avec append_to_response, en 14 langues.
- [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 Discover](https://amodb.dev/fr/discover/): API Discover avec les mêmes filtres que TMDB v3. Listez films et séries par genre, distribution, société, mot-clé, année, note, durée et plateforme.
- [API d'images et hôte d'images](https://amodb.dev/fr/images-api/): API d'images de films aux chemins TMDB v3 : listez affiches, fonds, logos et images par titre, puis chargez-les depuis img.amodb.dev en 10 tailles sans clé.
- [API de recherche](https://amodb.dev/fr/search/): API de recherche aux chemins et au JSON de TMDB v3 : films, séries, personnes, collections, sociétés et mots-clés par texte, filtres d'année et pagination.
- [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/companies-networks/
