---
title: "Ficha por appid de Steam (la crea si no existe)"
method: GET
path: "/steam/{appid}"
tags: ["fichas"]
---

# Ficha por appid de Steam (la crea si no existe)

`GET /steam/{appid}`

## Request

- Base URL: `https://ludoteca.dev/api/v1`
- URL: `https://ludoteca.dev/api/v1/steam/{appid}`
- Auth: none required

A diferencia de `/externo/steam/{id}`, si el juego aún no está en ludoteca.dev se importa de Steam: responde 202 y la ficha está lista en unos minutos.

## Path parameters

- `appid` integer, required

## Response `200`

La ficha

- Juego
  - `id` string: Id de ludoteca.dev: estable, no cambia aunque cambie el slug
  - `titulo` string: Título
  - `titulo_original` string, nullable: Título en chino, japonés o coreano cuando el título es la traducción inglesa de Steam
  - `ano` integer, nullable: Año de lanzamiento
  - `lanzamiento` object
    - `fecha` string, nullable: Tal como la da la tienda ("10 SEP 2019", "Por confirmarse")
    - `proximamente` boolean
  - `url_ficha` string, uri: URL de la ficha
  - `url_permanente` string, uri: URL que redirige siempre a la ficha (/id/LDT-n)
  - `descripcion` string, nullable
  - `idioma_descripcion` 'es' | 'en' | 'null', nullable: "en" cuando la única descripción disponible es en inglés
  - `traduccion_automatica` boolean: La descripción es una traducción automática del inglés (no había ninguna en español en las tiendas)
  - `portada` object: Copias reducidas servidas por ludoteca.dev (WebP); las originales de la tienda, en origen
    - `grande` string, uri, nullable
    - `mini` string, uri, nullable
    - `vertical` string, uri, nullable
    - `horizontal` string, uri, nullable
    - `origen` object
      - `vertical` string, nullable
      - `horizontal` string, nullable
  - `captura` object, nullable: Una captura del juego en marcha (de momento, de Steam): imagen reducida servida por ludoteca.dev y la original de la tienda
    - `imagen` string, uri
    - `origen` string, uri
  - `estudio` string, nullable: Desarrollador, como texto
  - `desarrollador` unknown
  - `editora` string, nullable
  - `pais` string, nullable: ISO 3166-1 del estudio desarrollador
  - `pais_fuente` 'estudio' | 'editora' | 'wikidata' | 'devuego' | 'manual' | 'null', nullable: De dónde sale el país. «editora»: la tienda no dice qué estudio lo desarrolla y es el de su editora (deducción)
  - `empresas` object
    - `desarrolladores` EmpresaCorta[]
      - `nombre` string
      - `nombre_original` string, nullable: En chino, japonés o coreano, si «nombre» es el nombre latino
      - `slug` string
      - `pais` string, nullable
      - `url` string, uri
    - `editoras` EmpresaCorta[]
      - `nombre` string
      - `nombre_original` string, nullable: En chino, japonés o coreano, si «nombre» es el nombre latino
      - `slug` string
      - `pais` string, nullable
      - `url` string, uri
  - `tiendas` Tienda[]
    - `clave` 'steam' | 'epic' | 'gog' | 'itch' | 'playstation' | 'xbox' | 'nintendo' | 'appstore' | 'googleplay'
    - `nombre` string
    - `id` string, nullable: Id en la tienda, en el formato que acepta /externo/{clave}/{id}; null si no se conoce
    - `url` string, uri
    - `icono` string, uri, nullable
    - `color` string, nullable
    - `fuente` string: De dónde salió el enlace: la tienda de origen, catalogo, wikidata, busqueda, devuego o revisado (confirmado a mano)
    - `titulo` string, nullable: Título en esa tienda (puede llevar la edición o la plataforma)
    - `editora` string, nullable: Editora según esa tienda (cambia a menudo en consolas y GOG)
    - `desarrollador` string, nullable: Desarrollador según esa tienda
    - `fecha` string, nullable: Fecha de lanzamiento en esa tienda, tal como la da
  - `otras_versiones` Version[]
    - `clave` 'steam' | 'epic' | 'gog' | 'itch' | 'playstation' | 'xbox' | 'nintendo' | 'appstore' | 'googleplay'
    - `nombre` string
    - `id` string, nullable
    - `url` string, uri
    - `titulo` string, nullable
    - `editora` string, nullable
    - `desarrollador` string, nullable
    - `fecha` string, nullable
  - `tiendas_retiradas` TiendaRetirada[]: Tiendas en las que estuvo y ya no se vende (delisted). Aparte de tiendas para no enlazarlas como sitio donde comprar.
    - `clave` 'steam' | 'epic' | 'gog' | 'itch' | 'playstation' | 'xbox' | 'nintendo' | 'appstore' | 'googleplay'
    - `nombre` string
    - `id` string, nullable
    - `url` string, uri: La URL que tenía (probablemente ya no funciona)
    - `url_archivo` string, uri: Copia en Wayback Machine (archive.org), la más cercana a la retirada
    - `retirado_desde` string, date, nullable: Cuándo se detectó o se marcó la retirada (no la fecha exacta)
  - `compra_fisica` object[]: Dónde comprar la edición física: tiendas de ediciones físicas (GAME, Tesura Games) que la tienen en su catálogo, una entrada por tienda y plataforma.
    - `tienda` string
    - `nombre` string
    - `plataforma` string: Clave de la plataforma (la de etiquetas.fisico)
    - `url` string, uri
  - `ids` object: Ids en otras bases de datos
  - `valoraciones` object: Solo las que existen. steam: la de los jugadores (se refresca con la cola de Steam). opencritic: media de la crítica sobre 100 según Wikidata (CC0), con la fecha de ese dato: no siempre es la actual, la vigente está en url.
    - `steam` object
      - `categoria` 'extremadamente_positivas' | 'muy_positivas' | 'positivas' | 'mayormente_positivas' | 'variadas' | 'mayormente_negativas' | 'negativas' | 'muy_negativas' | 'extremadamente_negativas'
      - `texto` string
      - `resenas` integer
      - `url` string, uri
    - `opencritic` object
      - `nota` integer
      - `fecha` string, date, nullable
      - `url` string, uri, nullable
      - `fuente` 'wikidata'
  - `compatibilidad` object: Solo lo que se sabe, de la versión de Steam. Se comprueba cada ~90 días (comprobado = fecha).
    - `steam_deck` object: Veredicto de Valve
      - `nivel` 'verificado' | 'jugable' | 'no_compatible'
      - `texto` string
      - `url` string, uri
      - `comprobado` string, date
    - `protondb` object: Linux vía Proton, según los informes de la comunidad en ProtonDB
      - `nivel` 'native' | 'platinum' | 'gold' | 'silver' | 'bronze' | 'borked' | 'pending'
      - `url` string, uri
      - `comprobado` string, date
  - `etiquetas` object: generos: unificados de los de cada tienda. saga y motor: de Wikidata. acceso: game-pass y ea-play (Xbox), ps-plus (catálogo de PS Plus Extra), gratis, demo, acceso-anticipado. fisico: plataformas con edición física (eShop de Nintendo y DeVuego; solo consta el «sí»). Cada una con la URL de su listado en ludoteca.dev (o null).
    - `generos` object[]
      - `clave` string
      - `nombre` string
      - `url` string, uri, nullable
    - `saga` object[]
      - `clave` string
      - `nombre` string
      - `url` string, uri, nullable
    - `motor` object[]
      - `clave` string
      - `nombre` string
      - `url` string, uri, nullable
    - `acceso` object[]
      - `clave` string
      - `nombre` string
      - `url` string, uri, nullable
    - `fisico` object[]
      - `clave` string
      - `nombre` string
      - `url` string, uri, nullable
  - `tecnico` object, nullable: Datos técnicos. Cada tienda describe su versión (el tamaño en Switch no es el de PC), así que van por tienda; solo aparecen los campos que esa tienda da. null si no hay ninguno.
    - `pegi` object, nullable: La edad que dan más tiendas
      - `edad` 3 | 7 | 12 | 16 | 18
      - `descriptores` string[]
    - `idiomas` object: Códigos BCP 47 (en, es-ES, es-419, zh-Hans...) de todas las tiendas
      - `textos` string[]
      - `voces` string[]: Doblaje (solo lo da Steam)
    - `tiendas` object: Por clave de tienda (steam, nintendo, xbox, playstation...)

## Other responses

- `202`: Ficha en preparación: reintenta en unos minutos
- `404`: No existe
- `429`: Límite de peticiones superado

---

[API](https://skmtc.dev/ludoteca/apis/api-de-ludoteca-dev.md) · [All operations](https://skmtc.dev/ludoteca/apis/api-de-ludoteca-dev/llms.txt) · [OpenAPI document](https://skmtc.dev/ludoteca/apis/api-de-ludoteca-dev/revisions/ef48e5a4ee62?raw)
