Skip to main content

Public Content API

Usa la Public Content API de Nolorem para leer tus entradas de blog de forma programática. Crea una clave de API, elige su ámbito, autentícate con un token bearer y sincroniza el contenido con cualquier sistema externo.

Actualizado el Jun 17, 2026

La Public Content API te ofrece acceso programático de solo lectura a las entradas de blog de tu organización en Nolorem. Úsala para llevar contenido a un sitio de Drupal, a un front end personalizado, a una aplicación móvil o a cualquier sistema externo que necesite los datos de tu blog.

La API está disponible en el plan Premium. Todo el acceso es de solo lectura; la publicación y la edición permanecen dentro de Nolorem.

Crear una clave de API

Solo los administradores de la organización pueden crear claves de API.

  1. En Ajustes, desplázate hasta la sección Claves de API (visible solo para administradores).
  2. Haz clic en Crear clave de API.
  3. Introduce un nombre descriptivo para la clave (por ejemplo, "Sitio web de Drupal" o "Script de sincronización de contenido").
  4. Elige el ámbito de la clave (ver más abajo).
  5. Copia la clave que se muestra en pantalla. Empieza por nlr_live_.

La clave se muestra una sola vez. Guárdala de inmediato en un gestor de secretos o en una variable de entorno. Si la pierdes, revoca la clave y crea una nueva.

La sección de Claves de API en Ajustes: un formulario de creación con un campo de nombre de clave y un selector de ámbito de blog, encima de una lista de claves existentes. Cada clave muestra su nombre, una insignia de ámbito (un nombre de blog o Todos los blogs), un prefijo de clave enmascarado y un botón Revocar.
Ajustes, Claves de API: crea una clave, elige su ámbito y gestiona las claves existentes. Solo se muestra siempre un prefijo enmascarado.

Elegir el ámbito de una clave

Cuando creas una clave, eliges si abarca un blog específico o todos los blogs de tu organización.

Clave con ámbito de blog (recomendado): la clave está vinculada a un único blog. Solo puede acceder a las entradas, categorías y etiquetas de ese blog. Si la clave se filtra o se comparte alguna vez, solo se expone el contenido de ese único blog.

Clave de toda la organización: la clave tiene acceso a todos los blogs de tu organización. Úsala solo cuando tengas un motivo deliberado para acceder a varios blogs con una sola clave.

La insignia de ámbito de cada clave en la lista muestra a qué blog está vinculada la clave, o "Todos los blogs" para una clave de toda la organización. El ámbito es fijo en la creación. Para cambiar el ámbito, crea una nueva clave con el ámbito deseado, actualiza cualquier consumidor y luego revoca la clave antigua.

Autenticar las solicitudes

Pasa la clave en la cabecera Authorization de cada solicitud:

Authorization: Bearer nlr_live_your_key_here

Ejemplo con curl:

curl https://nolorem.io/api/v1/posts \
  -H "Authorization: Bearer nlr_live_your_key_here"

La API es de servidor a servidor. No hay cabeceras CORS, por lo que los clientes de navegador no pueden llamarla directamente. Realiza todas las llamadas a la API desde tu back end o desde un script del lado del servidor.

Listar tus blogs

GET /api/v1/blogs lista los blogs a los que tu clave puede acceder. La forma de la respuesta es la misma tanto si la clave tiene ámbito de blog como si es de toda la organización.

curl https://nolorem.io/api/v1/blogs \
  -H "Authorization: Bearer nlr_live_your_key_here"

Respuesta:

{
  "data": [
    { "id": "uuid", "slug": "my-blog", "name": "My Blog" },
    { "id": "uuid", "slug": "company-news", "name": "Company News" }
  ]
}

Una clave con ámbito de blog devuelve exactamente una entrada (el blog vinculado). Una clave de toda la organización devuelve todos los blogs. Usa este endpoint para descubrir qué blogs abarca una clave antes de obtener contenido.

Filtrar entradas por blog

Todos los endpoints de contenido aceptan un parámetro opcional blog. Pasa el UUID del blog o su slug:

# Filter by slug
curl "https://nolorem.io/api/v1/posts?blog=my-blog" \
  -H "Authorization: Bearer nlr_live_your_key_here"

# Filter by UUID
curl "https://nolorem.io/api/v1/posts?blog=550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer nlr_live_your_key_here"

Si omites blog, la API devuelve contenido de todos los blogs a los que tu clave puede acceder (el comportamiento predeterminado, no disruptivo).

Si usas una clave con ámbito de blog y pasas ?blog= apuntando a un blog diferente, la API devuelve 403 Forbidden. Esto evita adivinar qué blogs existen en una organización.

El mismo parámetro blog funciona en /api/v1/categories y /api/v1/tags.

Listar entradas

GET /api/v1/posts devuelve una lista paginada de entradas de los blogs a los que tu clave puede acceder. De forma predeterminada devuelve las entradas publicadas, 20 por página.

curl "https://nolorem.io/api/v1/posts?status=published&per_page=50" \
  -H "Authorization: Bearer nlr_live_your_key_here"

Respuesta:

{
  "data": [
    {
      "id": "uuid",
      "blog_id": "uuid",
      "title": "My blog post",
      "slug": "my-blog-post",
      "excerpt": "Lead paragraph...",
      "language": "en",
      "category": "Technology",
      "tags": ["AI", "Productivity"],
      "featured_image_url": "https://...",
      "published_at": "2026-06-01T10:00:00Z",
      "updated_at": "2026-06-10T14:30:00Z",
      "html": null
    }
  ],
  "meta": { "page": 1, "per_page": 50, "total": 123 }
}

El campo html es siempre null en las respuestas de lista. Usa los endpoints de detalle para obtener el cuerpo completo de la entrada.

Filtros disponibles

ParámetroDescripciónEjemplo
blogUUID o slug del blog (por defecto: todos los blogs accesibles)blog=my-blog
statuspublished, draft o scheduled (por defecto: published)status=published
languageCódigo de idioma ISO 639-1language=nl
categoryNombre de categoría (sin distinguir mayúsculas)category=Technology
tagNombre de etiqueta (sin distinguir mayúsculas)tag=AI
updated_sinceFecha y hora ISO 8601; solo entradas modificadas después de esta fechaupdated_since=2026-06-01T00:00:00Z
pageNúmero de página, empezando en 1page=2
per_pageElementos por página, máximo 100per_page=100

Obtener una sola entrada

Obtén una entrada por su UUID para conseguir el cuerpo HTML completo:

curl "https://nolorem.io/api/v1/posts/550e8400-e29b-41d4-a716-446655440000" \
  -H "Authorization: Bearer nlr_live_your_key_here"

O por su slug:

curl "https://nolorem.io/api/v1/posts/slug/my-blog-post" \
  -H "Authorization: Bearer nlr_live_your_key_here"

Ambos devuelven un único objeto PublicPost (no envuelto en un array data) con el campo html poblado.

Sincronización incremental con updated_since

Para sincronizar solo el contenido nuevo o modificado, almacena la marca de tiempo de tu última sincronización correcta y pásala como updated_since en la siguiente ejecución:

# Initial sync: fetch all published posts
curl "https://nolorem.io/api/v1/posts?per_page=100" \
  -H "Authorization: Bearer nlr_live_your_key_here"

# Subsequent syncs: only posts changed since last sync
curl "https://nolorem.io/api/v1/posts?updated_since=2026-06-10T14:30:00Z&per_page=100" \
  -H "Authorization: Bearer nlr_live_your_key_here"

Recorre todas las páginas de resultados antes de almacenar tu nueva marca de tiempo de sincronización.

Detectar entradas despublicadas o eliminadas

Cuando usas updated_since para la sincronización incremental, la respuesta predeterminada solo devuelve las entradas que siguen publicadas. Si una entrada se despublicó o se eliminó en Nolorem desde tu última sincronización, simplemente desaparece de los resultados sin ninguna señal para eliminarla en el destino.

Para obtener esa señal, pasa include_deleted=true junto con tu marca de tiempo updated_since:

curl "https://nolorem.io/api/v1/posts?updated_since=2026-06-10T14:30:00Z&include_deleted=true" \
  -H "Authorization: Bearer nlr_live_your_key_here"

La respuesta incluye todas las entradas activas como de costumbre, además de entradas mínimas de tipo tombstone añadidas al final de data. Cada tombstone tiene:

  • id -- el UUID de la entrada que ya tienes de una sincronización anterior
  • status -- el estado actual de la entrada, o "deleted" si se eliminó de forma permanente
  • updated_at -- cuándo se produjo el cambio
  • deleted -- true si la entrada se eliminó, false si simplemente se despublicó o se pasó a borrador
{
  "data": [
    { "id": "...", "title": "Live post", "updated_at": "..." },
    { "id": "...", "status": "draft", "updated_at": "...", "deleted": false },
    { "id": "...", "status": "deleted", "updated_at": "...", "deleted": true }
  ],
  "meta": { "page": 1, "per_page": 20, "total": 1, "tombstones": 2 }
}

Usa meta.tombstones para saber cuántas entradas de tipo tombstone se han añadido. meta.total siempre refleja únicamente las entradas activas.

Cuando tu herramienta de sincronización vea un tombstone, despublica o elimina la página correspondiente en el destino (por ejemplo, marca el nodo de Drupal coincidente como despublicado o en borrador).

Sin include_deleted=true, el comportamiento es idéntico al anterior a este cambio -- solo se devuelven las entradas activas publicadas.

Listar categorías y etiquetas

Dos endpoints devuelven la taxonomía completa de categorías y etiquetas de tu blog. Son útiles para herramientas externas que necesitan asignar las categorías o etiquetas de Nolorem a su propia taxonomía (por ejemplo, un conector de Drupal que empareja las categorías de Nolorem con los términos de vocabulario de Drupal). Ambos aceptan el parámetro blog.

# All categories for your organisation (or the scoped blog)
curl "https://nolorem.io/api/v1/categories?blog=my-blog" \
  -H "Authorization: Bearer nlr_live_your_key_here"

# All tags for your organisation (or the scoped blog)
curl "https://nolorem.io/api/v1/tags?blog=my-blog" \
  -H "Authorization: Bearer nlr_live_your_key_here"

Ambos devuelven la lista completa en una sola respuesta (no paginada):

{ "data": [{ "id": "uuid", "name": "Marketing" }, { "id": "uuid", "name": "Technology" }] }

Se aplican el mismo token bearer, el requisito del plan Premium y el ámbito posts:read que en los endpoints de entradas.

Analítica de uso por clave

En Ajustes, cada fila de clave se puede expandir para mostrar la analítica de uso:

  • Solicitudes (últimas 24 h / total) -- cuántas llamadas a la API ha hecho esta clave.
  • Fuentes distintas -- cuántas direcciones IP y aplicaciones cliente distintas han usado esta clave recientemente.
  • Último uso -- la marca de tiempo de la solicitud autenticada más reciente.

Esta analítica te ayuda a entender cómo se usan tus claves y a detectar patrones inesperados.

Indicador de clave compartida

Si una clave muestra un gran número de direcciones IP distintas en un periodo breve, Nolorem puede marcarla como "posiblemente compartida o comprometida". El indicador aparece como un aviso ámbar en la fila de la clave. La clave sigue funcionando y no se toma ninguna acción automática; se trata de una señal informativa.

Cuando veas el indicador, revisa tus registros de uso. Si compartiste la clave de forma intencionada (por ejemplo, con varios servidores en un clúster), considera si el patrón de acceso es el esperado. Si la clave puede haberse filtrado o compartido con partes no deseadas, revócala y crea una nueva para limitar el acceso.

Límites de frecuencia

Cada clave de API está sujeta a estos límites:

  • 60 solicitudes por minuto
  • 5.000 solicitudes por día

Cuando superas un límite, la API devuelve HTTP 429 con una cabecera Retry-After que indica cuántos segundos esperar antes de reintentar:

HTTP/1.1 429 Too Many Requests
Retry-After: 43
{ "error": "Rate limit exceeded" }

Implementa un backoff exponencial para scripts de sincronización de larga duración fiables.

Códigos de error

EstadoSignificado
400Parámetros de consulta no válidos
401Clave de API ausente o no válida
403Se requiere el plan Premium, la clave carece del ámbito posts:read, o se usó una clave con ámbito de blog con un valor ?blog= que no coincide
404Entrada no encontrada
429Límite de frecuencia superado (revisa la cabecera Retry-After)

Especificación legible por máquina

La especificación completa de la API en formato OpenAPI 3.1 está disponible en:

GET /api/v1/openapi.json

Este endpoint no está autenticado. Puedes importarlo en Postman, Insomnia o cualquier herramienta compatible con OpenAPI.

Revocar una clave

Para revocar una clave, desplázate hasta la sección Claves de API en Ajustes, busca la clave por su nombre y haz clic en Revocar. La clave deja de funcionar de inmediato. Las solicitudes en curso que ya se habían autenticado se completarán, pero ninguna solicitud nueva con la clave revocada tendrá éxito.

¿Te resultó útil este artículo?

¿Aún necesitas ayuda?

¿No encuentras lo que buscas? Abre tu portal de soporte para chat en vivo y tickets. Inicia sesión con tu cuenta de Nolorem.

Abrir portal de soporte