Productoras y cadenas de TV
Los endpoints de productoras y cadenas devuelven el nombre, el país de origen y la ruta del logo de un estudio o una cadena de TV por id, en GET /3/company/{company_id} y GET /3/network/{network_id}. Las rutas y el JSON coinciden con TMDB v3. Pasa los ids a with_companies y with_networks en discover para listar sus títulos.
Obtener los detalles de una productora
GET / devuelve una productora: nombre, país de origen y ruta del logo. También incluye description, headquarters, homepage y parent_company, pero amodb los deja vacíos. El id es el id de productora de TMDB, así que los ids que guardaste antes siguen funcionando.
El ejemplo lee la primera productora de la película 550 y luego carga esa productora.
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"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);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
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;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)
}Parámetros
company_idrutaobligatorioId numérico de la productora, por ejemplo25.api_keyconsultauno de los dosTu clave. Usa esta o el encabezadoAuthorization: Bearer.
Campos de la respuesta
| Campo | Tipo | Notas |
|---|---|---|
description | texto | Siempre una cadena vacía. |
headquarters | texto | Ciudad o región. Vacío en la mayoría de las productoras. |
homepage | texto | Dirección del sitio web. Vacío en la mayoría de las productoras. |
id | entero | Id de la productora. |
logo_path | texto o null | Añádelo a https:/. |
name | texto | Nombre de la productora. |
origin_country | texto | Código ISO 3166-1 como US. Puede estar vacío. |
parent_company | null | Siempre null. amodb no rellena la productora matriz. |
Ejemplo de respuesta
{
"description": "",
"headquarters": "",
"homepage": "",
"id": 25,
"logo_path": "/nM2MfoMqzJQRiSynsDabOtFKetD.png",
"name": "20th Century Fox",
"origin_country": "US",
"parent_company": null
}La misma estructura llega con cualquier id de productora, por ejemplo /3/company/1 para Lucasfilm.
Obtener los detalles de una cadena
GET / devuelve una cadena de TV: nombre, país de origen, ruta del logo, headquarters y homepage. No tiene description ni parent_company. Lee el id de una cadena en el array networks de una serie. La serie /3/tv/1399 lista a HBO con el id 49.
{
"headquarters": "",
"homepage": "",
"id": 49,
"logo_path": "/tuomPhY2UtuPTqqFnKMVHvSb724.png",
"name": "HBO",
"origin_country": "US"
}| Campo | Tipo | Notas |
|---|---|---|
headquarters | texto | Vacío en la mayoría de las cadenas. |
homepage | texto | Vacío en la mayoría de las cadenas. |
id | entero | Id de la cadena. |
logo_path | texto o null | Ruta del archivo del logo. |
name | texto | Nombre de la cadena. |
origin_country | texto | Código ISO 3166-1. Una cadena vacía para servicios de streaming globales como Netflix. |
Endpoints de este grupo
Todas las rutas comparten la base https:/ y la misma autenticación que los demás endpoints.
| Método y ruta | Devuelve | Parámetros |
|---|---|---|
GET / | Registro de productora | company_id |
GET / | Registro de cadena | network_id |
GET /search/company | Lista paginada de productoras con id, name, logo_path, origin_country | query, page |
amodb no ofrece las rutas alternative_names ni images para productoras y cadenas. El logo es el logo_path del propio registro.
Logos
Construye la dirección del logo como https:/ más logo_path. GET /3/configuration lista los tamaños de logo: w92, w154, w185, w300, w500 y original. La página de imágenes tiene la tabla completa de tamaños. Los archivos de logo son sobre todo PNG, y los archivos de imagen no necesitan clave. Una productora sin logo tiene logo_path en null.
Filtrar discover por productora o cadena
Los ids de productora y de cadena resultan más útiles como filtros. Discover convierte un id en una lista de títulos.
| Filtro | Funciona en | Significado |
|---|---|---|
with_companies | /discover/movie y /discover/tv | Títulos hechos por estas productoras. |
with_networks | /discover/tv | Series emitidas por estas cadenas. Discover de películas lo ignora. |
Separa varios ids con una coma para exigirlos todos, o con una barra vertical (codificada como %7C) para aceptar cualquiera de ellos. La llamada de abajo lista las películas de una productora, ordenadas por popularidad. La segunda llamada lista las series que emitió HBO.
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"Los resultados de discover se guardan en la caché perimetral 30 minutos y llegan 20 por página. La lista completa de filtros está en la página de discover.
Encontrar una productora por nombre
GET / devuelve una lista paginada. Cada fila tiene id, logo_path, name y origin_country. Las filas no se ordenan por coincidencia exacta: el estudio llamado Lucasfilm Ltd. tiene el id 1 y es la tercera fila, después de dos nombres parecidos. Compara name y origin_country antes de tomar un id. Las reglas de consulta están en la página de búsqueda. No existe una ruta de búsqueda de cadenas.
Errores
Una productora o una cadena que no existe devuelve el cuerpo de error de TMDB con status_code 34. Los demás fallos usan el mismo cuerpo.
| HTTP | status_code | Cuándo |
|---|---|---|
| 401 | 7 | La clave falta o es incorrecta. |
| 402 | 36 | El periodo del plan ha terminado. |
| 404 | 34 | No hay ninguna productora ni cadena con ese id, o el id no es un número. |
| 405 | 37 | Enviaste un método de escritura. |
| 429 | 25 | Superaste tus solicitudes por minuto. Espera los segundos de Retry-After. |
Consulta errores para ver la lista completa y límites de solicitudes para los encabezados.
Notas prácticas
- Guarda el
idde la productora junto al nombre. Los nombres cambian, los ids no. - Comprueba que
logo_pathno seanullantes de mostrarlo. No dependas dehomepage,headquartersnidescription, porque están vacíos. - Los detalles de productoras y cadenas se guardan en la caché perimetral 6 horas. Los archivos de logo de
img.amodb.devse guardan 30 días. - Una cadena es un concepto de TV. Para obtener sus series, usa
with_networksen/discover/tv, no en discover de películas. - Para encontrar una productora por nombre, usa la búsqueda de productoras de arriba y elige la fila correcta por
nameyorigin_country.