# Кампаніі і тэлеканалы

> Эндпоінты кампаній і тэлеканалаў вяртаюць назву, краіну паходжання і шлях да лагатыпа студыі або тэлеканала па id праз GET /3/company/{company_id} і GET /3/network/{network_id}. Шляхі і JSON адпавядаюць TMDB v3. Перадайце id у with_companies і with_networks у discover, каб атрымаць іх назвы.

## Эндпоінт

`GET /3/company/{company_id}`

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

Адказ:

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

## Атрыманне дэталяў кампаніі

`GET /3/company/{company_id}` вяртае адну кінакампанію: назву, краіну паходжання і шлях да лагатыпа. Ён таксама нясе `description`, `headquarters`, `homepage` і `parent_company`, але amodb пакідае іх пустымі. Id гэта id кампаніі ў TMDB, таму раней захаваныя id працягваюць працаваць.

У прыкладзе чытаецца першая кінакампанія фільма 550, а потым загружаецца гэтая кампанія.

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

### Параметры

| Параметр     | Дзе   | Абавязковы   | Апісанне                                                             |
| ------------ | ----- | ------------ | -------------------------------------------------------------------- |
| `company_id` | шлях  | так          | Лікавы id кампаніі, напрыклад `25`.                                  |
| `api_key`    | запыт | адзін з двух | Ваш ключ. Выкарыстоўвайце яго або загаловак `Authorization: Bearer`. |

### Палі адказу

| Поле             | Тып            | Заўвагі                                                 |
| ---------------- | -------------- | ------------------------------------------------------- |
| `description`    | радок          | Заўсёды пусты радок.                                    |
| `headquarters`   | радок          | Горад або рэгіён. Для большасці кампаній пусты.         |
| `homepage`       | радок          | Адрас сайта. Для большасці кампаній пусты.              |
| `id`             | цэлы лік       | Id кампаніі.                                            |
| `logo_path`      | радок або null | Дадайце да `https://img.amodb.dev/t/p/{size}`.          |
| `name`           | радок          | Назва кампаніі.                                         |
| `origin_country` | радок          | Код ISO 3166-1, напрыклад `US`. Можа быць пустым.       |
| `parent_company` | null           | Заўсёды `null`. amodb не запаўняе бацькоўскую кампанію. |

### Прыклад адказу

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

Тая ж форма вяртаецца для кожнага id кампаніі, напрыклад `/3/company/1` для Lucasfilm.

## Атрыманне дэталяў тэлеканала

`GET /3/network/{network_id}` вяртае тэлеканал: назву, краіну паходжання, шлях да лагатыпа, `headquarters` і `homepage`. У яго няма `description` і `parent_company`. Id тэлеканала чытайце з масіва `networks` серыяла. Серыял `/3/tv/1399` пералічвае HBO з id 49.

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

| Поле             | Тып            | Заўвагі                                                                             |
| ---------------- | -------------- | ----------------------------------------------------------------------------------- |
| `headquarters`   | радок          | Для большасці тэлеканалаў пусты.                                                    |
| `homepage`       | радок          | Для большасці тэлеканалаў пусты.                                                    |
| `id`             | цэлы лік       | Id тэлеканала.                                                                      |
| `logo_path`      | радок або null | Шлях да файла лагатыпа.                                                             |
| `name`           | радок          | Назва тэлеканала.                                                                   |
| `origin_country` | радок          | Код ISO 3166-1. Пусты радок для глабальных стрымінгавых сэрвісаў, такіх як Netflix. |

## Эндпоінты гэтай групы

Кожны шлях мае агульную аснову `https://api.amodb.dev/3` і тую ж аўтэнтыфікацыю, што іншыя эндпоінты.

| Метад і шлях                | Што вяртае                                                               | Параметры       |
| --------------------------- | ------------------------------------------------------------------------ | --------------- |
| `GET /company/{company_id}` | Запіс кампаніі                                                           | `company_id`    |
| `GET /network/{network_id}` | Запіс тэлеканала                                                         | `network_id`    |
| `GET /search/company`       | Спіс кампаній па старонках з `id`, `name`, `logo_path`, `origin_country` | `query`, `page` |

amodb не прапануе шляхі `alternative_names` і `images` для кампаній і тэлеканалаў. Лагатып гэта `logo_path` у самім запісе.

### Лагатыпы

Складзіце адрас лагатыпа як `https://img.amodb.dev/t/p/w185` плюс `logo_path`. `GET /3/configuration` пералічвае памеры лагатыпаў: `w92`, `w154`, `w185`, `w300`, `w500` і `original`. Поўную табліцу памераў гл. на старонцы [выявы](https://amodb.dev/be/images-api/). Файлы лагатыпаў пераважна PNG, а для файлаў выяў ключ не патрэбны. У кампаніі без лагатыпа `logo_path` роўны `null`.

## Фільтр discover па кампаніі або тэлеканале

Id кампаній і тэлеканалаў найбольш карысныя як фільтры. Discover ператварае id у спіс назваў.

| Фільтр           | Дзе працуе                         | Сэнс                                                                                   |
| ---------------- | ---------------------------------- | -------------------------------------------------------------------------------------- |
| `with_companies` | `/discover/movie` і `/discover/tv` | Назвы, зробленыя гэтымі кампаніямі.                                                    |
| `with_networks`  | `/discover/tv`                     | Серыялы, што выходзілі ў эфір на гэтых тэлеканалах. У discover для фільмаў ігнаруецца. |

Падзяліце некалькі id коскай, каб патрабаваць усе, або вертыкальнай рыскай (закадаванай як `%7C`), каб прыняць любы. Выклік ніжэй пералічвае фільмы адной кампаніі, адсартаваныя па папулярнасці. Другі выклік пералічвае серыялы, што выходзілі ў эфір на 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"
```

Вынікі discover кэшуюцца на edge на 30 хвілін і прыходзяць па 20 на старонку. Поўны спіс фільтраў ёсць на старонцы [пошук па фільтрах](https://amodb.dev/be/discover/).

## Пошук кампаніі па назве

`GET /3/search/company?query=lucasfilm` вяртае спіс па старонках. Кожны радок мае `id`, `logo_path`, `name` і `origin_country`. Радкі не ранжыруюцца па дакладным супадзенні: студыя `Lucasfilm Ltd.` мае id 1 і знаходзіцца на трэцім месцы, пасля дзвюх падобных назваў. Параўнайце `name` і `origin_country`, перш чым браць id. Правілы запытаў ёсць на старонцы [пошук](https://amodb.dev/be/search/). Шляху пошуку тэлеканалаў няма.

## Памылкі

Кампанія або тэлеканал, якіх не існуе, вяртаюць цела памылкі TMDB са `status_code` 34. Іншыя збоі выкарыстоўваюць тое ж цела.

| HTTP | status_code | Калі                                                                 |
| ---- | ----------- | -------------------------------------------------------------------- |
| 401  | 7           | Ключ адсутнічае або няправільны.                                     |
| 402  | 36          | Тэрмін дзеяння плана скончыўся.                                      |
| 404  | 34          | Няма кампаніі або тэлеканала з гэтым id, або id не з’яўляецца лікам. |
| 405  | 37          | Вы адправілі метад запісу.                                           |
| 429  | 25          | Перавышаны ліміт запытаў у хвіліну. Пачакайце `Retry-After` секунд.  |

Увесь спіс гл. на старонцы [памылкі](https://amodb.dev/be/errors/), а загалоўкі на старонцы [ліміты запытаў](https://amodb.dev/be/rate-limits/).

## Практычныя заўвагі

- Захоўвайце `id` кампаніі побач з назвай. Назвы мяняюцца, id не мяняюцца.
- Правярайце `logo_path` на `null`, перш чым адлюстроўваць. Не спадзявайцеся на `homepage`, `headquarters` або `description`, бо яны пустыя.
- Дэталі кампаній і тэлеканалаў кэшуюцца на edge на 6 гадзін. Файлы лагатыпаў на `img.amodb.dev` кэшуюцца на 30 дзён.
- Тэлеканал гэта паняцце для серыялаў. Каб атрымаць яго серыялы, выкарыстоўвайце `with_networks` у `/discover/tv`, а не ў discover для фільмаў.
- Каб знайсці кампанію па назве, выкарыстоўвайце пошук кампаній вышэй, потым абярыце патрэбны радок па `name` і `origin_country`.

## Пытанні і адказы

### Дзе ўзяць id кампаніі або id тэлеканала?

Чытайце іх з назваў, якія вы ўжо атрымалі. Фільм пералічвае production_companies, а серыял пералічвае networks і production_companies. Кожны запіс нясе лікавы id, які прымаюць эндпоінты кампаній і тэлеканалаў.

### Ці можна пералічыць усе фільмы, якія зняла кампанія?

Выкарыстоўвайце discover з фільтрам with_companies. Перадайце id кампаніі і праходзьце па старонках вынікаў. Дадайце with_networks у discover для серыялаў, каб пералічыць серыялы, што выйшлі ў эфір на тэлеканале.

### Ці схаваны файлы лагатыпаў за ключом API?

Не. JSON са шляхам да лагатыпа патрабуе ваш ключ, але файлы на img.amodb.dev ключа не патрабуюць і кэшуюцца на 30 дзён.

### Як знайсці кампанію па назве?

Выклічце GET /3/search/company?query=lucasfilm. Радкі не ранжыруюцца па дакладным супадзенні, таму параўнайце name і origin_country і вазьміце id патрэбнага радка. Пошуку тэлеканалаў няма, таму чытайце id тэлеканалаў з серыяла.

## Звязаныя старонкі

- [API дэталяў фільма](https://amodb.dev/be/movies/): API дэталяў фільма з тымі ж шляхамі і JSON, што ў TMDB v3. Адзін фільм па id, а акцёры, рэйтынгі і настрой праз append_to_response, на 14 мовах.
- [API серыялаў](https://amodb.dev/be/tv-series/): API серыялаў з тымі ж шляхамі і JSON, што ў TMDB v3. Серыял па id з сезонамі, тэлеканаламі і наступным эпізодам, плюс узроставыя рэйтынгі і сэрвісы прагляду.
- [Discover API](https://amodb.dev/be/discover/): Discover API з фільтрамі TMDB v3. Спіс фільмаў і серыялаў па жанры, акцёрах, кампаніі, ключавым слове, годзе, рэйтынгу і працягласці з сартаваннем.
- [API выяў і хост выяў](https://amodb.dev/be/images-api/): API выяў фільмаў з шляхамі TMDB v3: спісы постэраў, фонавых выяў, лагатыпаў і кадраў назвы, а потым загрузка з img.amodb.dev у 10 памерах без ключа.
- [API пошуку](https://amodb.dev/be/search/): API пошуку з шляхамі і JSON як у TMDB v3. Фільмы, серыялы, персоны, калекцыі, кампаніі і ключавыя словы па тэксце, з фільтрамі па годзе і старонкамі.
- [Хуткі старт](https://amodb.dev/be/quickstart/): Першы выклік да amodb: атрымайце ключ, запытайце дэталі фільма ў curl, JavaScript, Python, PHP або Go і загрузіце постэр з img.amodb.dev. Менш за 2 хвіліны.

Абноўлена: 2026-10-18. Source: https://amodb.dev/be/companies-networks/
