# Компанії та телемережі

> Ендпоінти компаній і мереж повертають за 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`    | query | одне з двох  | Ваш ключ. Використовуйте його або заголовок `Authorization: Bearer`. |

### Поля відповіді

| Поле             | Тип             | Примітки                                               |
| ---------------- | --------------- | ------------------------------------------------------ |
| `description`    | string          | Завжди порожній рядок.                                 |
| `headquarters`   | string          | Місто або регіон. У більшості компаній порожній.       |
| `homepage`       | string          | Адреса сайту. У більшості компаній порожня.            |
| `id`             | integer         | id компанії.                                           |
| `logo_path`      | string або null | Додайте до `https://img.amodb.dev/t/p/{size}`.         |
| `name`           | string          | Назва компанії.                                        |
| `origin_country` | string          | Код 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`   | string          | У більшості мереж порожній.                                                            |
| `homepage`       | string          | У більшості мереж порожня.                                                             |
| `id`             | integer         | id мережі.                                                                             |
| `logo_path`      | string або null | Шлях до файлу логотипа.                                                                |
| `name`           | string          | Назва мережі.                                                                          |
| `origin_country` | string          | Код 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/uk/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 кешуються на рівні CDN на 30 хвилин і приходять по 20 на сторінку. Повний список фільтрів є на сторінці [discover](https://amodb.dev/uk/discover/).

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

`GET /3/search/company?query=lucasfilm` повертає посторінковий список. Кожен рядок має `id`, `logo_path`, `name` та `origin_country`. Рядки не впорядковані за точним збігом: студія `Lucasfilm Ltd.` має id 1 і стоїть третьою, після двох схожих назв. Перш ніж брати id, порівняйте `name` та `origin_country`. Правила запитів описано на сторінці [пошук](https://amodb.dev/uk/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/uk/errors/), а заголовки на сторінці [ліміти запитів](https://amodb.dev/uk/rate-limits/).

## Практичні поради

- Зберігайте `id` компанії поруч із назвою. Назви змінюються, id ні.
- Перед відображенням перевіряйте, що `logo_path` не дорівнює `null`. Не покладайтеся на `homepage`, `headquarters` чи `description`, бо вони порожні.
- Деталі компаній і мереж кешуються на рівні CDN на 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 компанії та гортайте результати по сторінках. У discover для серіалів додайте with_networks, щоб отримати серіали, які показала телемережа.

### Чи потрібен ключ API для файлів логотипів?

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

### Як знайти компанію за назвою?

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

## Пов'язані сторінки

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

Оновлено: 2026-10-18. Source: https://amodb.dev/uk/companies-networks/
