Blog›Guides

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.

Una Guía para Desarrolladores sobre el Endpoint /dataset de la Wikiprompt

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` / `url`: 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.
  • `content`: el texto real del prompt. Este es el campo que más importa a la mayoría de las integraciones; todo lo demás es metadatos alrededor de él.
  • `category`: uno de creative, marketing, personal, productivity, coding, education, business, research, other.
  • `media`: un arreglo de URLs de imágenes/videos cuando el prompt produjo salida visual. Vacío para prompts de solo texto.
  • `model`: el modelo de IA al que apunta el prompt o con el que se generó, como una cadena de texto libre ("Midjourney", "GPT-4o", "Veo", etc).
  • `metadata`: un objeto estructurado con 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.
  • `original_source`: el enlace a la publicación original de donde vino el prompt. Ver la nota de atribución abajo, este campo importa si reutilizas los datos aguas abajo.
  • `created_at` / `updated_at`: marcas de tiempo ISO 8601. 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.

    Tags
    dataset·api·developer-guide·pagination·open-data·reference