# Компании и мрежи

> Ендпойнтите за компании и мрежи връщат името, държавата на произход и пътя до логото на студио или телевизионна мрежа по 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/bg/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/bg/discover/).

## Намиране на компания по име

`GET /3/search/company?query=lucasfilm` връща странициран списък. Всеки ред има `id`, `logo_path`, `name` и `origin_country`. Редовете не са подредени по точно съвпадение: студиото `Lucasfilm Ltd.` има id 1 и е третият ред, след две сходни имена. Сравнете `name` и `origin_country`, преди да вземете id. Правилата за заявките са на страницата [търсене](https://amodb.dev/bg/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/bg/errors/) за целия списък и [лимити на заявките](https://amodb.dev/bg/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/bg/movies/): API за детайли на филм със същите пътища и JSON като TMDB v3. Един филм по id, а актьори, рейтинги и настроения през append_to_response, на 14 езика.
- [API за сериали](https://amodb.dev/bg/tv-series/): API за сериали със същите пътища и JSON като TMDB v3. Сериал по id със сезони, мрежи и следващ епизод, плюс възрастови рейтинги и доставчици за гледане.
- [Discover API](https://amodb.dev/bg/discover/): Discover API със същите филтри като TMDB v3. Списък с филми и сериали по жанр, актьори, компания, ключова дума, година, рейтинг и продължителност със сортиране.
- [API за изображения и хост за изображения](https://amodb.dev/bg/images-api/): API за изображения на филми с пътища на TMDB v3: списъци с постери, фонови изображения, лога и кадри, после зареждане от img.amodb.dev в 10 размера без ключ.
- [API за търсене](https://amodb.dev/bg/search/): API за търсене със същите пътища и JSON като TMDB v3. Намира филми, сериали, личности, колекции, компании и ключови думи по текст, с филтър по година.
- [Бърз старт](https://amodb.dev/bg/quickstart/): Първата ви заявка към amodb: вземете ключ, поискайте детайли за филм с curl, JavaScript, Python, PHP или Go и заредете постера от img.amodb.dev. До 2 минути.

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