Una Guía para Desarrolladores sobre el Endpoint /dataset de la Wikiprompt
Una guía precisa, en estilo de referencia, de los endpoints `/dataset manifest` y `/dataset/prompts`: formas de respuesta, cada campo, paginación por conjunto de claves, almacenamiento en caché y manejo de errores.

Guía para Desarrolladores sobre el Endpoint /dataset de Wikiprompt
Wikiprompt es un catálogo público y curado de prompts de IA, que cubre ChatGPT, Claude, Gemini, GPT Image, Midjourney, Seedance, Veo, Kling, Nano Banana, Grok y más. En lugar de hacer scraping del sitio en vivo para extraer ese catálogo programáticamente, ahora existe una exportación masiva dedicada: /dataset. Esta publicación lo documenta de la manera en que querrías que se documentara una API de terceros: formas de respuesta, semántica de campos, mecánica de paginación, caché y manejo de errores, con ejemplos ejecutables.
Dos endpoints, un trabajo
Hay exactamente dos URLs que necesitas:
https://www.wikiprompt.org/dataset (manifiesto)https://www.wikiprompt.org/dataset/prompts (datos)El manifiesto es metadatos sobre la exportación. El endpoint de datos es la exportación en sí, paginada. Ambos devuelven JSON plano, sin clave de API, sin encabezado de autenticación, nada que registrar.
La respuesta del manifiesto
Un GET en el dataset devuelve algo con esta forma:
{
"total_prompts": 55000,
"record_fields": [
"slug", "url", "title", "description", "content",
"category", "tags", "media", "model", "metadata",
"author", "original_source", "created_at", "updated_at"
],
"pagination": {
"endpoint": "https://www.wikiprompt.org/dataset/prompts",
"cursor_param": "after",
"limit_param": "limit",
"default_limit": 200,
"max_limit": 500
}
}
Trata total_prompts como un conteo aproximado y en vivo, no como una constante fija. El catálogo crece a diario, así que fija tu integración a record_fields y al bloque pagination en lugar de codificar el conteo en cualquier parte de tu código.
La respuesta de datos
Un GET en /dataset/prompts devuelve una página de registros más un cursor para la siguiente página:
{
"count": 500,
"records": [
{
"slug": "one-brick-monumental-shadow-architectural-photo",
"url": "https://www.wikiprompt.org/one-brick-monumental-shadow-architectural-photo",
"title": "One Brick: Monumental Shadow Architectural Photo",
"description": "A single brick photographed to cast a monumental architectural shadow.",
"content": "el texto real del prompt va aquí, verbatim",
"category": "creative",
"tags": ["photography", "architecture", "shadow-play"],
"media": ["https://www.wikiprompt.org/media/tw/..."],
"model": "Midjourney",
"metadata": {
"media_type": "image",
"aspect_ratio": "16:9",
"style": ["minimalist", "high-contrast"],
"assessment": { "creativity": 4, "usefulness": 3 }
},
"author": "some_handle",
"original_source": "https://twitter.com/some_handle/status/...",
"created_at": "2026-03-11T00:00:00Z",
"updated_at": "2026-03-11T00:00:00Z"
}
],
"next": "https://www.wikiprompt.org/dataset/prompts?after=<cursor>&limit=500"
}
Referencia de campos
Cada registro lleva los mismos catorce campos. Los que vale la pena destacar:
slug es el identificador estable; url es la página canónica, útil si quieres enlazar de vuelta o re-rastrear un solo registro más tarde.creative, marketing, personal, productivity, coding, education, business, research, other."Midjourney", "GPT-4o", "Veo", etc).media_type, aspect_ratio, style, y un bloque assessment que puntúa dimensiones de calidad como creatividad y utilidad. Esto es null para prompts de texto plano que nunca llevaron evaluación de imagen/video.updated_at se mueve si un registro se edita o se re-enriquece después del hecho.Mecánica de paginación
El endpoint usa paginación por claves, no números de página. Dos parámetros lo controlan:
limit: cuántos registros por página, por defecto 200, máximo 500.after: un cursor opaco, que se te devuelve en la URL next de cada respuesta.El contrato es simple: llama al endpoint, lee next, llama a next verbatim, repite hasta que next sea null. No construyas el valor de after tú mismo; trátalo como un token opaco.
curl "https://www.wikiprompt.org/dataset/prompts?limit=500"
Un rastreo completo en Python se ve así:
import requests
url = "https://www.wikiprompt.org/dataset/prompts?limit=500"
records = []
while url:
resp = requests.get(url, timeout=30)
resp.raise_for_status()
payload = resp.json()
records.extend(payload["records"])
url = payload["next"]
print(f"se extrajeron {len(records)} prompts")
A 500 por página y más de 55,000 registros, eso es aproximadamente 110 solicitudes para una sincronización completa, o muchas menos para una incremental si además filtras del lado del cliente por updated_at.
Caché y CORS
Ambos endpoints están en caché en el borde, así que solicitudes repetidas para la misma página (mismo valor de after) son baratas y rápidas de nuestro lado, y rápidas para ti. Access-Control-Allow-Origin: * está configurado en cada respuesta, así que puedes llamar esto directamente desde JavaScript del navegador con fetch(), sin necesidad de proxy. No hay límite de tasa vinculado a una clave de API porque no hay clave de API; sé un ciudadano razonable y guarda el manifiesto en caché localmente en lugar de consultarlo en cada solicitud.
Manejo de errores
Bajo carga, el endpoint puede devolver 503 con un encabezado Retry-After (segundos a esperar antes de intentar de nuevo). Respétalo:
import time, requests
def get_with_retry(url):
while True:
resp = requests.get(url, timeout=30)
if resp.status_code == 503:
wait = int(resp.headers.get("Retry-After", "5"))
time.sleep(wait)
continue
resp.raise_for_status()
return resp.json()
Cualquier otro no-200 vale la pena registrarlo y detenerse en lugar de reintentar a ciegas. Un cursor after malformado no debería ocurrir si solo sigues next, pero el código defensivo no debería asumir eso para siempre.
Atribución
Los prompts en este dataset se agregan de publicaciones públicas de sus autores originales. Wikiprompt es el agregador, no el titular de los derechos. Si construyes algo con estos datos, cita wikiprompt.org y, por registro, el campo original_source que apunta de vuelta a la publicación original. No hay una licencia formal adjunta más allá de eso: atribuye el sitio y atribuye al autor.
Vale la pena probar
Tres registros para verificar tu parser contra ellos una vez que tengas una página extraída: un prompt de imagen de physicalización de datos, una foto arquitectónica de sombra monumental, y un diseño de personaje de viajero nómada. Los tres hacen un viaje de ida y vuelta limpio a través de content, media, y metadata.
Si una exportación masiva es más de lo que necesitas, ahora mismo, existen dos opciones más ligeras: la API de búsqueda para consultas individuales, y el servidor MCP si estás conectando esto a un agente en lugar de un script. Ambos se asientan sobre el mismo catálogo subyacente que /dataset, así que nada aquí es un callejón sin salida si empiezas más pequeño y creces hacia la exportación masiva más tarde.
Related Articles
- Laya vs. Jev: Die Open-Source-Antwort auf die Entscheidungsmodell-Welle
Sep 22, 2026 · 5 min read
- Laya contre Jev : La réponse open-source à la vague des modèles de décision
Sep 22, 2026 · 5 min read
- Laya vs Jev: La respuesta de código abierto a la ola de modelos de decisión
Sep 22, 2026 · 5 min read
- Laya vs Jev: 오픈소스로 답하는 의사결정 모델 물결
Sep 22, 2026 · 5 min read
- लाया बनाम जेव: निर्णय-मॉडल लहर का ओपन-सोर्स उत्तर
Sep 22, 2026 · 5 min read