# Компании и телесети

> Эндпоинты компаний и телесетей возвращают название, страну происхождения и путь к логотипу студии или телесети по 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. |

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

Все пути используют базовый URL `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`. Полная таблица размеров есть на странице [API изображений](https://amodb.dev/ru/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 на страницу. Полный список фильтров есть на странице [discover](https://amodb.dev/ru/discover/).

## Поиск компании по названию

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

Берите их из проектов, которые вы уже получили. Фильм содержит 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/ru/movies/): API деталей фильма с теми же путями и JSON, что в TMDB v3. Получите фильм по ID, добавьте актеров, рейтинги и настроения через append_to_response, на 14 языках.
- [API сериалов](https://amodb.dev/ru/tv-series/): API сериалов с теми же путями и JSON, что в TMDB v3. Сериал по id с сезонами, телесетями и следующей серией, а также возрастные рейтинги и сервисы просмотра.
- [Discover API](https://amodb.dev/ru/discover/): Discover API с фильтрами TMDB v3. Фильмы и сериалы по жанру, актеру, студии, ключевому слову, году, рейтингу, длительности и провайдеру, с сортировкой.
- [API изображений и хост изображений](https://amodb.dev/ru/images-api/): API изображений фильмов с путями TMDB v3: списки постеров, фонов, логотипов и кадров для каждого проекта, загрузка с img.amodb.dev в 10 размерах без ключа.
- [API поиска](https://amodb.dev/ru/search/): API поиска с путями и JSON как в TMDB v3. Находите фильмы, сериалы, людей, коллекции, компании и ключевые слова по тексту, с фильтром по году и пагинацией.
- [Быстрый старт](https://amodb.dev/ru/quickstart/): Первый вызов amodb: получите ключ, запросите детали фильма через curl, JavaScript, Python, PHP или Go и загрузите постер с img.amodb.dev. Меньше 2 минут.

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