API pública Pokékipe
Analítica competitiva de Pokémon, gratuita, derivada de las estadísticas mensuales de uso publicadas por Smogon y refrescada cada mes. Sin cuenta para uso ocasional; genera una clave personal desde los ajustes de tu cuenta para elevar el techo de rate-limit en pulls de volumen.
Endpoints
100+
Formatos cubiertos
30+
Refresco
Mensual
Auth
Opcional
Licencia
CC BY 4.0
Por qué existe
Lo que esta API es y lo que no es
Cuatro cosas que saber antes de escribir una sola línea de código contra /api/v1/.
Lo que esta API es
Una superficie JSON de solo lectura sobre los datos competitivos mundiales de Pokémon. Pregunta "¿cuál es el meta de la Gen 9 OU a 1500+ ELO este mes?" o "¿quién contró este Pokémon en el top cut de este torneo?", y obtén una respuesta en una sola llamada con shapes estables y documentadas.
De dónde vienen los datos
Los battle logs mensuales de Smogon (el chaos JSON público), los feeds oficiales de torneos (Pokémon Company, VGC, Smogon Tour), y fuentes comunitarias como Limitless TCG para events community. Pokékipe hace su propia ingestion, normalización y enriquecimiento por encima, y reexpone el resultado limpio.
Lo que esta API no es
No es un puente live a Pokémon Showdown, ni un simulador de combate, ni un endpoint de damage calculator, ni un motor de teambuilding. Esas herramientas viven en el sitio. La API es la capa de datos debajo.
Crédito a las fuentes
Todo el crédito va a las fuentes. Smogon, los exportadores del formato chaos JSON, y la comunidad de jugadores que juega los ladders cada mes son la razón por la que existe este dataset. Pokékipe lo hace consultable, pero no posee los datos brutos.
Empezar
Tu primera llamada, en 30 segundos
Tres ejemplos copy-paste que descargan el catálogo de formatos. Sin clave de API, sin setup, sin signup. Elige tu pestaña de lenguaje, pega, ejecuta.
curl -s https://pokekipe.com/api/v1/formats \
| jq '.[0:3]'Reemplaza la ruta con cualquier endpoint listado en la referencia de abajo. La primera llamada debería volver en menos de un segundo con caché caliente.
Autenticación
Autenticación y límites de tasa
Las llamadas anónimas funcionan para uso ocasional. Una clave personal (gratuita, generada desde los ajustes de tu cuenta) eleva el techo de rate-limit para analistas y desarrolladores que descargan datos en volumen. Las claves nunca desbloquean nuevos endpoints; solo elevan el techo.
Anónimo, sin clave
Por defectoHaz llamadas sin ningún header. El bucket está indexado en tu IP, así que un script pequeño o un agente LLM con un puñado de peticiones por sesión nunca tocará el límite.
- Sin cuenta, sin signup, sin header que poner.
- Bucket por IP, perfecto para scripts ad-hoc y tool-use de agentes LLM.
- Devuelve 429 si encadenas pulls de volumen; cambia entonces a una clave personal.
por minuto
60
por día
5,000
Autenticado, con clave personal
Recomendado para volumenPasa tu clave como X-API-Key (o Authorization: Bearer pk_live_…). Las llamadas anónimas siguen funcionando en paralelo; la clave solo eleva el techo, no desbloquea nuevos endpoints.
- Bucket por usuario: tus cambios de IP no resetean el contador.
- Techos más generosos en cada límite por ruta.
- Hasta 5 claves activas por cuenta, revocables en cualquier momento.
por minuto
600
por día
100,000
Headers en cada respuesta
Cada respuesta exitosa lleva los headers de rate-limit de abajo, para que tu cliente pueda autorregularse sin reintentos. Léelos una vez por respuesta y baja el ritmo en cuanto Remaining se acerque a unas pocas peticiones, no a cero.
| Header | Significado |
|---|---|
| X-RateLimit-Tier | El palier que te concierne: anónimo (sin clave) o autenticado (JWT o clave de API resuelta). |
| X-RateLimit-Limit-Min | Techo por minuto para tu palier (60 anónimo, 600 autenticado). |
| X-RateLimit-Limit-Day | Techo diario para tu palier (5 000 anónimo, 100 000 autenticado). |
| X-RateLimit-Remaining-Min | Llamadas restantes en la ventana minuto actual. Baja el ritmo cuando se acerca a cero. |
| X-RateLimit-Remaining-Day | Llamadas restantes en la ventana día actual. Reset a la misma hora de pared cada día. |
| Retry-After | Solo enviado en 429. Espera estos segundos antes de reintentar, normalmente menos de 60 para la ventana minuto. |
Errores
Errores que podrías ver
Códigos HTTP estándar. El cuerpo es siempre JSON con un campo "detail" que describe el problema. Trata 4xx como problema de contrato (tu petición) y 5xx como problema nuestro (reintenta con backoff).
OK
OK. El cuerpo es el payload JSON documentado en la referencia. Los arrays vacíos significan "sin filas", no "falta", trátalos como datos, no como un fallo.
Not Modified
Not Modified. Los headers de caché se validaron. Usa el cuerpo en caché, sin necesidad de re-parsear. Se devuelve automáticamente cuando envías If-None-Match o If-Modified-Since.
Bad Request
Bad Request. Un parámetro de query o el shape del body es incorrecto. El mensaje detail nombra el campo exacto. No reintentes sin corregir la entrada.
Unauthorized
Unauthorized. La petición necesitaba una clave de API o sesión y no recibió ninguna válida, o las credenciales fueron revocadas. No sigas reintentando, vuelve a emitir la credencial.
Not Found
Not Found. La ruta o el recurso no existe. Para rutas por-Pokémon, esto suele significar que el formato aún no tiene datos de uso para ese Pokémon, no un error tipográfico de tu lado.
Too Many Requests
Too Many Requests. Has tocado el techo de rate-limit. Lee Retry-After y espera. Backoff exponencial es buen estilo pero raramente necesario dado que la ventana es corta.
Server Error
Internal Server Error. Algo explotó de nuestro lado. Reintenta una vez tras unos segundos; si persiste, escríbenos en Discord con la URL de la petición.
Service Unavailable
Service Unavailable. Estamos desplegando o temporalmente sobrecargados. Reintenta con backoff. Estados publicados en el Discord de la comunidad.
Reglas del juego
Términos de uso
Cuatro reglas básicas. Léelas una vez, le ahorras un ping de Discord a tu yo futuro.
Crédito a las fuentes
Atribución requerida al redistribuir o republicar. Acredita a Pokékipe (link a https://pokekipe.com), y acredita a Smogon por el chaos JSON subyacente que publican cada mes.
Best-effort, sin SLA
Best-effort, sin SLA. Los datos se sirven "as is" sin garantía de uptime. Cachéa agresivamente y degrada con gracia cuando un endpoint sea lento o devuelva 429.
Versionado
Los esquemas bajo /api/v1/ se mantienen retrocompatibles durante el ciclo de vida de v1. Los breaking changes van a /api/v2/ con aviso previo en Discord y un header sunset en la ruta deprecada.
Uso comercial
El uso comercial está permitido bajo CC BY 4.0. Si construyes algo encima de esta API, nos encantaría escucharlo en el Discord de la comunidad.
Explora cada endpoint, todo en un sitio
Explora cada endpoint con descripciones, tablas de parámetros, esquemas de petición y respuesta, y muestras de código en curl, JavaScript y Python. Busca toda la API en una caja, deeplink a cualquier operación, comparte la URL.
- 100+ endpoints
- ·
- 3-pane navegación, contenido, muestras
- ·
- búsqueda de texto completo
- ·
- muestras de petición en vivo