# API kolekcí

> Kolekce seskupuje filmy jedné franšízy, například trilogii nebo dlouhou filmovou sérii. GET /3/collection/{collection_id} vrací její název, popis, obrázky a pole parts s filmy v pořadí vydání. Filmy odkazují zpět na svou kolekci přes belongs_to_collection, takže se můžete pohybovat oběma směry.

## Endpoint

`GET /3/collection/{collection_id}`

```bash
curl "https://api.amodb.dev/3/collection/10?language=en-US" \
  -H "Authorization: Bearer $AMODB_KEY"
```

Odpověď:

```json
{
  "id": 10,
  "name": "Star Wars - Saga",
  "overview": "An epic space-opera theatrical film series, which depicts the adventures of various characters \"a long time ago in a galaxy far, far away….\"",
  "poster_path": "/6mHkagjziBPth2Mx0VpEercocm4.jpg",
  "backdrop_path": "/iY2ujEY2m68OTTlPFTiHub9joHS.jpg",
  "parts": [
    {
      "adult": false,
      "backdrop_path": "/jKquaxnCRelAbibZVMdTsUEnkKm.jpg",
      "genre_ids": [
        12,
        28,
        878
      ],
      "id": 11,
      "original_language": "en",
      "original_title": "Star Wars",
      "overview": "Princess Leia is captured and held hostage by the evil Imperial forces in their effort to take over the galactic Empire. Venturesome Luke Skywalker and dashing captain Han Solo team together with the loveable robot duo R2-D2 and C-3PO to re...",
      "popularity": 70.481,
      "poster_path": "/fai0rspsNeJCS69wHNjOdWxcI7P.jpg",
      "release_date": "1977-05-25",
      "title": "Star Wars",
      "video": false,
      "vote_average": 8.207,
      "vote_count": 23028,
      "media_type": "movie"
    },
    {
      "adult": false,
      "backdrop_path": "/k9pshruhCpJAdH9RaGJO6jaWQ4X.jpg",
      "genre_ids": [
        12,
        28,
        878
      ],
      "id": 1891,
      "original_language": "en",
      "original_title": "The Empire Strikes Back",
      "overview": "The epic saga continues as Luke Skywalker, in hopes of defeating the evil Galactic Empire, learns the ways of the Jedi from aging master Yoda. But Darth Vader is more determined than ever to capture Luke. Meanwhile, rebel leader Princess Le...",
      "popularity": 29.9034,
      "poster_path": "/nNAeTmF4CtdSgMDplXTDPOpYzsX.jpg",
      "release_date": "1980-05-20",
      "title": "The Empire Strikes Back",
      "video": false,
      "vote_average": 8.393,
      "vote_count": 18993,
      "media_type": "movie"
    },
    {
      "adult": false,
      "backdrop_path": "/ziECpBRIyclmBNaFSWlvCfsKbMD.jpg",
      "genre_ids": [
        12,
        28,
        878
      ],
      "id": 1892,
      "original_language": "en",
      "original_title": "Return of the Jedi",
      "overview": "Luke Skywalker leads a mission to rescue his friend Han Solo from the clutches of Jabba the Hutt, the Emperor prepares to crush the Rebellion with a more powerful Death Star, and the Rebel fleet mounts a massive attack on the space station....",
      "popularity": 26.3255,
      "poster_path": "/jQYlydvHm3kUix1f8prMucrplhm.jpg",
      "release_date": "1983-05-25",
      "title": "Return of the Jedi",
      "video": false,
      "vote_average": 7.911,
      "vote_count": 17442,
      "media_type": "movie"
    }
  ]
}
```

## Získání kolekce

`GET /3/collection/{collection_id}` vrací jednu franšízu: její název, popis, plakát, pozadí a pole `parts`. Každá část je souhrn filmu s poli, která potřebujete pro kartu, takže jedno volání vykreslí celou polici franšízy.

Příklad načte kolekci 10, filmy Star Wars, a vypíše její filmy v pořadí vydání.

```bash
curl -s "https://api.amodb.dev/3/collection/10?language=en-US" \
  -H "Authorization: Bearer $AMODB_KEY"
```

```js
const url = 'https://api.amodb.dev/3/collection/10?language=en-US';
const res = await fetch(url, { headers: { Authorization: `Bearer ${process.env.AMODB_KEY}` } });
if (!res.ok) throw new Error(`amodb returned ${res.status}`);
const collection = await res.json();
console.log(collection.name);
for (const p of collection.parts) console.log(p.release_date || 'not dated', p.title);
```

```python
import os
import requests

r = requests.get(
    "https://api.amodb.dev/3/collection/10",
    params={"language": "en-US"},
    headers={"Authorization": f"Bearer {os.environ['AMODB_KEY']}"},
    timeout=10,
)
r.raise_for_status()
collection = r.json()
print(collection["name"])
for p in collection["parts"]:
    print(p.get("release_date") or "not dated", p["title"])
```

```php
<?php
$url = 'https://api.amodb.dev/3/collection/10?language=en-US';
$ch = curl_init($url);
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");
}
$collection = json_decode($body, true);
echo $collection['name'], PHP_EOL;
foreach ($collection['parts'] as $p) {
    echo $p['release_date'] ?: 'not dated', ' ', $p['title'], PHP_EOL;
}
```

```go
package main

import (
	"encoding/json"
	"fmt"
	"net/http"
	"os"
	"time"
)

type Collection struct {
	Name  string `json:"name"`
	Parts []struct {
		Title       string `json:"title"`
		ReleaseDate string `json:"release_date"`
	} `json:"parts"`
}

func main() {
	url := "https://api.amodb.dev/3/collection/10?language=en-US"
	req, _ := http.NewRequest("GET", url, nil)
	req.Header.Set("Authorization", "Bearer "+os.Getenv("AMODB_KEY"))
	client := &http.Client{Timeout: 10 * time.Second}
	res, err := client.Do(req)
	if err != nil {
		panic(err)
	}
	defer res.Body.Close()
	if res.StatusCode != http.StatusOK {
		panic(res.Status)
	}
	var c Collection
	if err := json.NewDecoder(res.Body).Decode(&c); err != nil {
		panic(err)
	}
	fmt.Println(c.Name)
	for _, p := range c.Parts {
		date := p.ReleaseDate
		if date == "" {
			date = "not dated"
		}
		fmt.Println(date, p.Title)
	}
}
```

### Parametry

| Parametr        | Kde   | Povinný       | Popis                                                                                                                            |
| --------------- | ----- | ------------- | -------------------------------------------------------------------------------------------------------------------------------- |
| `collection_id` | path  | ano           | Číselné ID kolekce, například `10`.                                                                                              |
| `api_key`       | query | jeden ze dvou | Váš klíč. Použijte jej, nebo hlavičku `Authorization: Bearer`.                                                                   |
| `language`      | query | ne            | Jeden ze 14 podporovaných jazyků, například `en-US` nebo `fr-FR`. Nastavuje jazyk názvu a popisu každého filmu. Výchozí `en-US`. |

Vlastní `name` a `overview` kolekce přicházejí tak, jak jsou uložené, a s `language` se nemění. U některých kolekcí nejsou anglicky.

### Pole odpovědi

| Pole                                           | Typ              | Poznámky                                                                                        |
| ---------------------------------------------- | ---------------- | ----------------------------------------------------------------------------------------------- |
| `id`                                           | integer          | ID kolekce.                                                                                     |
| `name`                                         | string           | Název franšízy.                                                                                 |
| `overview`                                     | string           | Krátký popis. U některých kolekcí prázdný.                                                      |
| `poster_path`, `backdrop_path`                 | string nebo null | Připojte k `https://img.amodb.dev/t/p/{size}`. Viz [obrázky](https://amodb.dev/cs/images-api/). |
| `parts`                                        | array            | Souhrny filmů, od nejstaršího `release_date`.                                                   |
| `parts[].id`                                   | integer          | ID filmu. Předejte jej do [detailu filmu](https://amodb.dev/cs/movies/).                        |
| `parts[].title`, `parts[].original_title`      | string           | Lokalizovaný a původní název.                                                                   |
| `parts[].overview`                             | string           | Lokalizovaný obsah.                                                                             |
| `parts[].release_date`                         | string           | `YYYY-MM-DD`, nebo prázdný řetězec u filmu bez data. Tyto filmy jsou na konci.                  |
| `parts[].media_type`                           | string           | V kolekci vždy `movie`.                                                                         |
| `parts[].genre_ids`                            | array            | Číselná ID. Názvy jsou na stránce [žánry](https://amodb.dev/cs/genres/).                        |
| `parts[].adult`, `parts[].video`               | boolean          | `adult` je vždy `false`, protože tituly pro dospělé se neposkytují.                             |
| `parts[].original_language`                    | string           | Dvoupísmenný kód jazyka.                                                                        |
| `parts[].popularity`                           | number           | Skóre popularity.                                                                               |
| `parts[].poster_path`, `parts[].backdrop_path` | string nebo null | Obrázky filmu.                                                                                  |
| `parts[].vote_average`, `parts[].vote_count`   | number, integer  | Souhrnné skóre uživatelů.                                                                       |

### Příklad odpovědi

Zobrazeny jsou dvě z devíti částí.

```json
{
  "id": 10,
  "name": "Star Wars Collection",
  "overview": "An epic space-opera theatrical film series, which depicts the adventures of various cha...",
  "poster_path": "/pWVLFh4OuejTpUaDQbB1C4zoS2p.jpg",
  "backdrop_path": "/iY2ujEY2m68OTTlPFTiHub9joHS.jpg",
  "parts": [
    {
      "adult": false,
      "backdrop_path": "/zqkmTXzjkAgXmEWLRsY4UpTWCeo.jpg",
      "genre_ids": [12, 28, 878],
      "id": 11,
      "original_language": "en",
      "original_title": "Star Wars",
      "overview": "Princess Leia is captured and held hostage by the evil Imperial forces in their effort...",
      "popularity": 70.481,
      "poster_path": "/fai0rspsNeJCS69wHNjOdWxcI7P.jpg",
      "release_date": "1977-05-25",
      "title": "Star Wars",
      "video": false,
      "vote_average": 8.207,
      "vote_count": 23025,
      "media_type": "movie"
    },
    {
      "adult": false,
      "backdrop_path": "/k9pshruhCpJAdH9RaGJO6jaWQ4X.jpg",
      "genre_ids": [12, 28, 878],
      "id": 1891,
      "original_language": "en",
      "original_title": "The Empire Strikes Back",
      "overview": "The epic saga continues as Luke Skywalker, in hopes of defeating the evil Galactic Empi...",
      "popularity": 29.9034,
      "poster_path": "/nNAeTmF4CtdSgMDplXTDPOpYzsX.jpg",
      "release_date": "1980-05-20",
      "title": "The Empire Strikes Back",
      "video": false,
      "vote_average": 8.393,
      "vote_count": 18990,
      "media_type": "movie"
    }
  ]
}
```

Dlouhé řetězce jsou na této stránce zkráceny pomocí `...`. Skutečná odpověď obsahuje celý text.

## Najděte kolekci filmu

Zřídka začínáte od ID kolekce. Začínáte od filmu a záznam [detailu filmu](https://amodb.dev/cs/movies/) vám řekne, kam patří. Pole `belongs_to_collection` je objekt s `id`, `name`, `poster_path` a `backdrop_path`. Je `null` u filmu, který není součástí franšízy, například u filmu 550.

```json
{
  "id": 11,
  "title": "Star Wars",
  "belongs_to_collection": {
    "id": 10,
    "name": "Star Wars Collection",
    "poster_path": "/pWVLFh4OuejTpUaDQbB1C4zoS2p.jpg",
    "backdrop_path": "/iY2ujEY2m68OTTlPFTiHub9joHS.jpg"
  }
}
```

Ukázka níže sleduje tento odkaz od filmu k jeho franšíze na dva požadavky.

```js
const base = 'https://api.amodb.dev/3';
const headers = { Authorization: `Bearer ${process.env.AMODB_KEY}` };

async function getJson(path) {
  const res = await fetch(`${base}${path}`, { headers });
  if (!res.ok) throw new Error(`${path} returned ${res.status}`);
  return res.json();
}

const movie = await getJson('/movie/11');
if (movie.belongs_to_collection) {
  const collection = await getJson(`/collection/${movie.belongs_to_collection.id}`);
  console.log(movie.title, 'is one of', collection.parts.length, 'films in', collection.name);
}
```

## Obrázky a hledání

Plakát a pozadí franšízy jsou pole `poster_path` a `backdrop_path` záznamu kolekce. Adresu souboru z nich sestavte podle stránky [obrázky](https://amodb.dev/cs/images-api/). amodb nenabízí cesty `/collection/{collection_id}/images` a `/collection/{collection_id}/translations`, takže kolekce nemá seznam alternativních plakátů ani jazykové řádky. Názvy filmů se místo toho řídí parametrem `language` a cesty, které jazykové řádky vracejí, pokrývá stránka [překlady](https://amodb.dev/cs/translations/).

Kolekci podle názvu najdete přes `GET /3/search/collection?query=matrix`, popsaný na stránce [vyhledávání](https://amodb.dev/cs/search/). Každý výsledek má `id`, `name`, `overview`, `poster_path`, `backdrop_path`, `original_language`, `original_name` a `adult`.

## Chyby

| HTTP | status_code | Kdy                                                                                         |
| ---- | ----------- | ------------------------------------------------------------------------------------------- |
| 401  | 7           | Klíč chybí nebo je nesprávný.                                                               |
| 402  | 36          | Platnost tarifu skončila.                                                                   |
| 404  | 34          | Kolekce s tímto ID neexistuje, nebo ID není číslo.                                          |
| 405  | 37          | Použili jste metodu pro zápis na cestě kolekce.                                             |
| 429  | 25          | Překročili jste počet požadavků za minutu. Počkejte tolik sekund, kolik říká `Retry-After`. |

Úplný seznam je na stránce [chyby](https://amodb.dev/cs/errors/) a limity tarifů na stránce [limity požadavků](https://amodb.dev/cs/rate-limits/).

## Praktické poznámky

- Kolekce seskupují jen filmy. Film má nejvýše jeden objekt `belongs_to_collection`, takže jeden film patří do jedné franšízy.
- Filmy přicházejí v pořadí vydání. Filmy s prázdným datem jsou na konci, označte je proto jako zatím bez data.
- Záznam kolekce se na edge cachuje 6 hodin jako ostatní detaily, takže stránka franšízy může jednu odpověď znovu použít po tuto dobu.
- Část nese jen souhrnná pole. Délku, obsazení a hodnocení načtěte pro každý film přes [detail filmu](https://amodb.dev/cs/movies/), když ho uživatel otevře.
- Jako klíč filmu používejte `parts[].id`, ne jeho pozici ve franšíze. Pořadí a data se časem opravují.
- Než zobrazíte `name`, ověřte, že je ve vašem jazyce zobrazení. Některé kolekce mají název v jiném jazyce a `language` jej nemění.

## Otázky a odpovědi

### Jak poznám, zda film patří do kolekce?

Přečtěte belongs_to_collection v záznamu detailu filmu. Je to objekt s id, name, poster_path a backdrop_path, nebo null, když film stojí samostatně. Toto id použijte v cestě kolekce.

### Vracejí se filmy v pořadí vydání?

Ano. Pole parts je seřazeno od nejstaršího podle release_date. Film bez data má prázdné release_date a je umístěn nakonec, označte ho proto jako zatím bez data.

### Mají seriály kolekce?

Ne. Kolekce seskupují filmy. Seriál popisují jeho sezóny a epizody, které jsou zdokumentované na stránkách seriálů a sezón a epizod.

### Jak vyhledám kolekci podle názvu?

Použijte cestu pro hledání kolekcí, například /3/search/collection?query=matrix. Vrací stránkovaný seznam s id, name a obrázky. Vezměte id a zavolejte endpoint kolekce pro filmy.

## Související stránky

- [API detailu filmu](https://amodb.dev/cs/movies/): API detailu filmu se stejnými cestami a JSON jako TMDB v3. Načtěte film podle ID, přidejte obsazení, hodnocení a nálady přes append_to_response, 14 jazyků.
- [API vyhledávání](https://amodb.dev/cs/search/): API vyhledávání se stejnými cestami a JSON jako TMDB v3. Najděte filmy, seriály, osoby, kolekce, společnosti a klíčová slova podle textu s filtrem roku.
- [API obrázků a hostitel obrázků](https://amodb.dev/cs/images-api/): API obrázků filmů s cestami TMDB v3: vypište plakáty, pozadí, loga a záběry každého titulu a načtěte je z img.amodb.dev v 10 velikostech bez klíče.
- [API překladů](https://amodb.dev/cs/translations/): API překladů filmů s cestami TMDB v3: přečtěte všechny uložené názvy, popisy a slogany filmu, seriálu nebo epizody ve všech jazycích najednou.
- [Discover API](https://amodb.dev/cs/discover/): Discover API se stejnými filtry jako TMDB v3. Vypisujte filmy a seriály podle žánru, společnosti, klíčového slova, roku, hodnocení, délky a poskytovatele.
- [Rychlý start](https://amodb.dev/cs/quickstart/): První volání amodb: získejte klíč, vyžádejte detail filmu v curl, JavaScriptu, Pythonu, PHP nebo Go a načtěte plakát z img.amodb.dev. Za méně než 2 minuty.

Aktualizováno: 2026-10-18. Source: https://amodb.dev/cs/collections/
