# Companii și rețele

> Endpoint-urile pentru companii și rețele întorc numele, țara de origine și calea logoului unui studio sau al unei rețele TV după ID, la GET /3/company/{company_id} și GET /3/network/{network_id}. Căile și JSON-ul se potrivesc cu TMDB v3. Transmite ID-urile în with_companies și with_networks la discover ca să listezi titlurile lor.

## Endpoint

`GET /3/company/{company_id}`

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

Răspuns:

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

## Obține detaliile unei companii

`GET /3/company/{company_id}` întoarce o companie de producție: nume, țară de origine și calea logoului. Poartă și `description`, `headquarters`, `homepage` și `parent_company`, dar amodb le lasă goale. ID-ul este ID-ul de companie TMDB, deci ID-urile pe care le-ai stocat înainte continuă să funcționeze.

Exemplul de mai jos citește prima companie de producție a filmului 550 și apoi încarcă acea companie.

```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)
}
```

### Parametri

| Parametru    | Loc        | Obligatoriu          | Descriere                                                             |
| ------------ | ---------- | -------------------- | --------------------------------------------------------------------- |
| `company_id` | cale       | da                   | ID numeric de companie, de exemplu `25`.                              |
| `api_key`    | interogare | una dintre cele două | Cheia ta. Folosește-o pe aceasta sau antetul `Authorization: Bearer`. |

### Câmpurile răspunsului

| Câmp             | Tip          | Observații                                        |
| ---------------- | ------------ | ------------------------------------------------- |
| `description`    | șir          | Mereu un șir gol.                                 |
| `headquarters`   | șir          | Oraș sau regiune. Gol la majoritatea companiilor. |
| `homepage`       | șir          | Adresa site-ului. Gol la majoritatea companiilor. |
| `id`             | număr întreg | ID-ul companiei.                                  |
| `logo_path`      | șir sau null | Se adaugă la `https://img.amodb.dev/t/p/{size}`.  |
| `name`           | șir          | Numele companiei.                                 |
| `origin_country` | șir          | Cod ISO 3166-1 precum `US`. Poate fi gol.         |
| `parent_company` | null         | Mereu `null`. amodb nu completează compania-mamă. |

### Exemplu de răspuns

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

Aceeași structură revine pentru fiecare ID de companie, de exemplu `/3/company/1` pentru Lucasfilm.

## Obține detaliile unei rețele

`GET /3/network/{network_id}` întoarce o rețea TV: nume, țară de origine, calea logoului, `headquarters` și `homepage`. Nu are `description` și nici `parent_company`. Citește un ID de rețea din array-ul `networks` al unui serial. Serialul `/3/tv/1399` listează HBO cu ID-ul 49.

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

| Câmp             | Tip          | Observații                                                                         |
| ---------------- | ------------ | ---------------------------------------------------------------------------------- |
| `headquarters`   | șir          | Gol la majoritatea rețelelor.                                                      |
| `homepage`       | șir          | Gol la majoritatea rețelelor.                                                      |
| `id`             | număr întreg | ID-ul rețelei.                                                                     |
| `logo_path`      | șir sau null | Calea fișierului de logo.                                                          |
| `name`           | șir          | Numele rețelei.                                                                    |
| `origin_country` | șir          | Cod ISO 3166-1. Un șir gol pentru serviciile de streaming globale, precum Netflix. |

## Endpoint-urile din acest grup

Fiecare cale are baza `https://api.amodb.dev/3` și aceeași autentificare ca celelalte endpoint-uri.

| Metodă și cale              | Întoarce                                                                  | Parametri       |
| --------------------------- | ------------------------------------------------------------------------- | --------------- |
| `GET /company/{company_id}` | Fișa companiei                                                            | `company_id`    |
| `GET /network/{network_id}` | Fișa rețelei                                                              | `network_id`    |
| `GET /search/company`       | Listă paginată de companii cu `id`, `name`, `logo_path`, `origin_country` | `query`, `page` |

amodb nu oferă căile `alternative_names` sau `images` pentru companii și rețele. Logoul este `logo_path` din fișa însăși.

### Logouri

Construiește adresa logoului ca `https://img.amodb.dev/t/p/w185` plus `logo_path`. `GET /3/configuration` listează dimensiunile de logo: `w92`, `w154`, `w185`, `w300`, `w500` și `original`. Pagina [imagini](https://amodb.dev/ro/images-api/) are tabelul complet de dimensiuni. Fișierele de logo sunt în mare parte PNG, iar fișierele de imagine nu cer cheie. O companie fără logo are `logo_path` setat la `null`.

## Filtrează discover după companie sau rețea

ID-urile de companii și rețele sunt cele mai utile ca filtre. Discover transformă un ID într-o listă de titluri.

| Filtru           | Funcționează pe                     | Semnificație                                                        |
| ---------------- | ----------------------------------- | ------------------------------------------------------------------- |
| `with_companies` | `/discover/movie` și `/discover/tv` | Titluri făcute de aceste companii.                                  |
| `with_networks`  | `/discover/tv`                      | Seriale difuzate de aceste rețele. Discover pentru filme îl ignoră. |

Separă mai multe ID-uri cu virgulă ca să le ceri pe toate sau cu bară verticală (codificată `%7C`) ca să accepți oricare. Apelul de mai jos listează filmele unei companii, sortate după popularitate. Al doilea apel listează serialele difuzate de 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"
```

Rezultatele discover sunt ținute în cache la margine 30 de minute și sosesc câte 20 pe pagină. Lista completă de filtre este pe pagina [descoperire](https://amodb.dev/ro/discover/).

## Găsește o companie după nume

`GET /3/search/company?query=lucasfilm` întoarce o listă paginată. Fiecare rând are `id`, `logo_path`, `name` și `origin_country`. Rândurile nu sunt ordonate după potrivirea exactă: studioul numit `Lucasfilm Ltd.` are ID-ul 1 și este al treilea rând, după două nume asemănătoare. Compară `name` și `origin_country` înainte să iei un ID. Regulile interogării sunt pe pagina [căutare](https://amodb.dev/ro/search/). Nu există cale de căutare pentru rețele.

## Erori

O companie sau o rețea care nu există întoarce corpul de eroare TMDB cu `status_code` 34. Celelalte eșecuri folosesc același corp.

| HTTP | status_code | Când                                                                         |
| ---- | ----------- | ---------------------------------------------------------------------------- |
| 401  | 7           | Cheia lipsește sau este greșită.                                             |
| 402  | 36          | Perioada planului s-a încheiat.                                              |
| 404  | 34          | Nu există o companie sau o rețea cu acel ID sau ID-ul nu este un număr.      |
| 405  | 37          | Ai trimis o metodă de scriere.                                               |
| 429  | 25          | Ai depășit cererile pe minut. Așteaptă numărul de secunde din `Retry-After`. |

Vezi [erori](https://amodb.dev/ro/errors/) pentru lista întreagă și [limite de cereri](https://amodb.dev/ro/rate-limits/) pentru antete.

## Note practice

- Stochează `id`-ul companiei lângă nume. Numele se schimbă, ID-urile nu.
- Verifică dacă `logo_path` este `null` înainte să-l afișezi. Nu te baza pe `homepage`, `headquarters` sau `description`, pentru că sunt goale.
- Detaliile companiilor și ale rețelelor sunt ținute în cache 6 ore la margine. Fișierele de logo de pe `img.amodb.dev` sunt ținute în cache 30 de zile.
- O rețea este un concept TV. Ca să-i obții serialele, folosește `with_networks` pe `/discover/tv`, nu pe discover pentru filme.
- Ca să găsești o companie după nume, folosește căutarea de companii de mai sus, apoi alege rândul potrivit după `name` și `origin_country`.

## Întrebări și răspunsuri

### De unde iau un ID de companie sau un ID de rețea?

Citește-le din titlurile pe care le-ai preluat deja. Un film listează production_companies, iar un serial TV listează networks și production_companies. Fiecare intrare poartă ID-ul numeric pe care îl acceptă endpoint-urile pentru companii și rețele.

### Pot lista fiecare film făcut de o companie?

Folosește discover cu filtrul with_companies. Transmite ID-ul companiei și parcurge rezultatele pe pagini. Adaugă with_networks la discover pentru TV ca să listezi serialele difuzate de o rețea.

### Sunt fișierele de logo în spatele cheii API?

Nu. JSON-ul care conține calea logoului cere cheia ta, dar fișierele de pe img.amodb.dev nu cer cheie și sunt ținute în cache 30 de zile.

### Cum găsesc o companie după nume?

Apelează GET /3/search/company?query=lucasfilm. Rândurile nu sunt ordonate după potrivirea exactă, deci compară name și origin_country și ia ID-ul rândului potrivit. Nu există căutare de rețele, deci citește ID-urile rețelelor dintr-un serial.

## Pagini conexe

- [API detalii film](https://amodb.dev/ro/movies/): API detalii film cu aceleași căi și același JSON ca TMDB v3. Preia un film după ID, adaugă credite, evaluări și atmosferă cu append_to_response, în 14 limbi.
- [API seriale TV](https://amodb.dev/ro/tv-series/): API seriale TV cu căile și JSON-ul TMDB v3. Preia un serial după ID cu sezoane, rețele și următorul episod, plus clasificări de conținut și furnizori.
- [API discover](https://amodb.dev/ro/discover/): API discover cu filtrele TMDB v3. Listează filme și seriale după gen, distribuție, companie, cuvânt-cheie, an, evaluare, durată și furnizor, cu sortare.
- [API imagini și gazdă de imagini](https://amodb.dev/ro/images-api/): API imagini filme cu căi TMDB v3: listează postere, imagini de fundal, logouri și cadre, apoi încarcă-le de la img.amodb.dev în 10 dimensiuni, fără cheie.
- [API căutare](https://amodb.dev/ro/search/): API căutare cu căile și JSON-ul TMDB v3. Găsește filme, seriale, persoane, colecții, companii și cuvinte-cheie după text, cu filtre de an și paginare.
- [Ghid rapid](https://amodb.dev/ro/quickstart/): Fă primul apel amodb: ia o cheie, cere detaliile unui film în curl, JavaScript, Python, PHP sau Go, apoi încarcă posterul de pe img.amodb.dev. Sub 2 minute.

Actualizat: 2026-10-18. Source: https://amodb.dev/ro/companies-networks/
