# Firmy i sieci telewizyjne

> Endpointy firm i sieci zwracają nazwę, kraj pochodzenia i ścieżkę do logo studia lub sieci telewizyjnej po ID, pod GET /3/company/{company_id} i GET /3/network/{network_id}. Ścieżki i JSON odpowiadają TMDB v3. Przekaż ID do with_companies i with_networks w discover, aby wypisać ich tytuły.

## Endpoint

`GET /3/company/{company_id}`

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

Odpowiedź:

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

## Pobieranie szczegółów firmy

`GET /3/company/{company_id}` zwraca jedną firmę produkcyjną: nazwę, kraj pochodzenia i ścieżkę do logo. Niesie też `description`, `headquarters`, `homepage` i `parent_company`, ale amodb zostawia je puste. ID to ID firmy z TMDB, więc zapisane wcześniej ID nadal działają.

Poniższy przykład odczytuje pierwszą firmę produkcyjną filmu 550, a potem pobiera tę firmę.

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

### Parametry

| Parametr     | Gdzie | Wymagany      | Opis                                                       |
| ------------ | ----- | ------------- | ---------------------------------------------------------- |
| `company_id` | path  | tak           | Numeryczne ID firmy, na przykład `25`.                     |
| `api_key`    | query | jeden z dwóch | Twój klucz. Użyj go albo nagłówka `Authorization: Bearer`. |

### Pola odpowiedzi

| Pole             | Typ             | Uwagi                                               |
| ---------------- | --------------- | --------------------------------------------------- |
| `description`    | string          | Zawsze pusty ciąg.                                  |
| `headquarters`   | string          | Miasto lub region. Puste dla większości firm.       |
| `homepage`       | string          | Adres strony. Puste dla większości firm.            |
| `id`             | integer         | ID firmy.                                           |
| `logo_path`      | string lub null | Dołącz do `https://img.amodb.dev/t/p/{size}`.       |
| `name`           | string          | Nazwa firmy.                                        |
| `origin_country` | string          | Kod ISO 3166-1, na przykład `US`. Może być pusty.   |
| `parent_company` | null            | Zawsze `null`. amodb nie wypełnia firmy nadrzędnej. |

### Przykładowa odpowiedź

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

Ten sam kształt wraca dla każdego ID firmy, na przykład `/3/company/1` dla Lucasfilm.

## Pobieranie szczegółów sieci telewizyjnej

`GET /3/network/{network_id}` zwraca sieć telewizyjną: nazwę, kraj pochodzenia, ścieżkę do logo, `headquarters` i `homepage`. Nie ma `description` ani `parent_company`. ID sieci odczytaj z tablicy `networks` serialu. Serial `/3/tv/1399` wymienia HBO z ID 49.

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

| Pole             | Typ             | Uwagi                                                                               |
| ---------------- | --------------- | ----------------------------------------------------------------------------------- |
| `headquarters`   | string          | Puste dla większości sieci.                                                         |
| `homepage`       | string          | Puste dla większości sieci.                                                         |
| `id`             | integer         | ID sieci.                                                                           |
| `logo_path`      | string lub null | Ścieżka pliku logo.                                                                 |
| `name`           | string          | Nazwa sieci.                                                                        |
| `origin_country` | string          | Kod ISO 3166-1. Pusty ciąg dla globalnych usług streamingowych, takich jak Netflix. |

## Endpointy w tej grupie

Wszystkie ścieżki mają wspólną bazę `https://api.amodb.dev/3` i to samo uwierzytelnianie co inne endpointy.

| Metoda i ścieżka            | Zwraca                                                               | Parametry       |
| --------------------------- | -------------------------------------------------------------------- | --------------- |
| `GET /company/{company_id}` | Rekord firmy                                                         | `company_id`    |
| `GET /network/{network_id}` | Rekord sieci                                                         | `network_id`    |
| `GET /search/company`       | Lista firm z paginacją z `id`, `name`, `logo_path`, `origin_country` | `query`, `page` |

amodb nie udostępnia ścieżek `alternative_names` ani `images` dla firm i sieci. Logo to `logo_path` w samym rekordzie.

### Loga

Adres logo zbuduj jako `https://img.amodb.dev/t/p/w185` plus `logo_path`. `GET /3/configuration` wymienia rozmiary logo: `w92`, `w154`, `w185`, `w300`, `w500` i `original`. Pełna tabela rozmiarów jest na stronie [obrazy](https://amodb.dev/pl/images-api/). Pliki logo to głównie PNG, a pliki obrazów nie wymagają klucza. Firma bez logo ma `logo_path` ustawione na `null`.

## Filtrowanie discover według firmy lub sieci

ID firm i sieci są najprzydatniejsze jako filtry. Discover zamienia ID na listę tytułów.

| Filtr            | Działa w                           | Znaczenie                                                      |
| ---------------- | ---------------------------------- | -------------------------------------------------------------- |
| `with_companies` | `/discover/movie` i `/discover/tv` | Tytuły nakręcone przez te firmy.                               |
| `with_networks`  | `/discover/tv`                     | Seriale emitowane przez te sieci. Discover filmów go ignoruje. |

Oddziel kilka ID przecinkiem, by wymagać wszystkich, albo znakiem kreski pionowej (zakodowanym jako `%7C`), by zaakceptować dowolne. Poniższe wywołanie wypisuje filmy jednej firmy, posortowane według popularności. Drugie wywołanie wypisuje seriale emitowane przez 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"
```

Wyniki discover są w cache na edge przez 30 minut i przychodzą po 20 na stronę. Pełna lista filtrów jest na stronie [discover](https://amodb.dev/pl/discover/).

## Wyszukiwanie firmy po nazwie

`GET /3/search/company?query=lucasfilm` zwraca listę z paginacją. Każdy wiersz ma `id`, `logo_path`, `name` i `origin_country`. Wiersze nie są uporządkowane według dokładnego dopasowania: studio o nazwie `Lucasfilm Ltd.` ma ID 1 i jest trzecim wierszem, po dwóch podobnych nazwach. Zanim weźmiesz ID, porównaj `name` i `origin_country`. Zasady zapytań opisuje strona [wyszukiwanie](https://amodb.dev/pl/search/). Nie ma ścieżki wyszukiwania sieci.

## Błędy

Nieistniejąca firma lub sieć zwraca treść błędu TMDB z `status_code` 34. Inne awarie używają tej samej treści.

| HTTP | status_code | Kiedy                                                                               |
| ---- | ----------- | ----------------------------------------------------------------------------------- |
| 401  | 7           | Brakuje klucza lub jest błędny.                                                     |
| 402  | 36          | Okres planu dobiegł końca.                                                          |
| 404  | 34          | Brak firmy lub sieci o tym ID albo ID nie jest liczbą.                              |
| 405  | 37          | Wysłano metodę zapisu.                                                              |
| 429  | 25          | Przekroczono limit żądań na minutę. Poczekaj tyle sekund, ile podaje `Retry-After`. |

Pełną listę zobacz w [błędy](https://amodb.dev/pl/errors/), a nagłówki opisują [limity żądań](https://amodb.dev/pl/rate-limits/).

## Praktyczne uwagi

- Zapisuj `id` firmy obok nazwy. Nazwy się zmieniają, ID nie.
- Zanim wyrenderujesz logo, sprawdź, czy `logo_path` nie ma wartości `null`. Nie polegaj na `homepage`, `headquarters` ani `description`, bo są puste.
- Szczegóły firm i sieci są w cache na edge przez 6 godzin. Pliki logo na `img.amodb.dev` są w cache przez 30 dni.
- Sieć to pojęcie telewizyjne. Aby dostać jej seriale, użyj `with_networks` w `/discover/tv`, a nie w discover filmów.
- Aby znaleźć firmę po nazwie, użyj wyszukiwania firm powyżej, a właściwy wiersz wybierz według `name` i `origin_country`.

## Pytania i odpowiedzi

### Skąd wziąć ID firmy lub sieci?

Odczytaj je z tytułów, które już masz. Film wymienia production_companies, a serial wymienia networks i production_companies. Każda pozycja niesie numeryczne id, które przyjmują endpointy firm i sieci.

### Czy mogę wypisać wszystkie filmy nakręcone przez firmę?

Użyj discover z filtrem with_companies. Przekaż ID firmy i przeglądaj wyniki stronami. Dodaj with_networks w TV discover, by wypisać seriale emitowane przez sieć.

### Czy pliki logo są za kluczem API?

Nie. JSON ze ścieżką logo wymaga twojego klucza, ale pliki na img.amodb.dev nie wymagają klucza i są w cache przez 30 dni.

### Jak znaleźć firmę po nazwie?

Wywołaj GET /3/search/company?query=lucasfilm. Wiersze nie są uporządkowane według dokładnego dopasowania, więc porównaj name i origin_country i weź id właściwego wiersza. Nie ma wyszukiwania sieci, więc ID sieci czytaj z serialu.

## Powiązane strony

- [API szczegółów filmu](https://amodb.dev/pl/movies/): API szczegółów filmu z tymi samymi ścieżkami i JSON co TMDB v3. Pobierz film po ID, dołącz obsadę, oceny i nastroje przez append_to_response, 14 języków.
- [API szczegółów serialu](https://amodb.dev/pl/tv-series/): API szczegółów serialu z tymi samymi ścieżkami i JSON co TMDB v3. Serial po ID z sezonami, sieciami, klasyfikacją wiekową i dostawcami streamingu.
- [Discover API](https://amodb.dev/pl/discover/): Discover API z tymi samymi filtrami co TMDB v3. Wypisuj filmy i seriale według gatunku, obsady, firmy, słowa kluczowego, roku, oceny, czasu trwania i dostawcy.
- [API obrazów i host obrazów](https://amodb.dev/pl/images-api/): API obrazów filmów ze ścieżkami TMDB v3: wypisz plakaty, tła, loga i kadry każdego tytułu, a potem ładuj je z img.amodb.dev w 10 rozmiarach bez klucza.
- [API wyszukiwania](https://amodb.dev/pl/search/): API wyszukiwania z tymi samymi ścieżkami i JSON co TMDB v3. Znajdź filmy, seriale, osoby, kolekcje, firmy i słowa kluczowe po tekście, z filtrem roku.
- [Szybki start](https://amodb.dev/pl/quickstart/): Pierwsze wywołanie amodb: zdobądź klucz, pobierz szczegóły filmu w curl, JavaScript, Python, PHP lub Go, potem załaduj plakat z img.amodb.dev. Poniżej 2 minut.

Zaktualizowano: 2026-10-18. Source: https://amodb.dev/pl/companies-networks/
