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.
- En Ajustes, desplázate hasta la sección Claves de API (visible solo para administradores).
- Haz clic en Crear clave de API.
- Introduce un nombre descriptivo para la clave (por ejemplo, "Sitio web de Drupal" o "Script de sincronización de contenido").
- Elige el ámbito de la clave (ver más abajo).
- 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.

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ámetro | Descripción | Ejemplo |
|---|---|---|
blog | UUID o slug del blog (por defecto: todos los blogs accesibles) | blog=my-blog |
status | published, draft o scheduled (por defecto: published) | status=published |
language | Código de idioma ISO 639-1 | language=nl |
category | Nombre de categoría (sin distinguir mayúsculas) | category=Technology |
tag | Nombre de etiqueta (sin distinguir mayúsculas) | tag=AI |
updated_since | Fecha y hora ISO 8601; solo entradas modificadas después de esta fecha | updated_since=2026-06-01T00:00:00Z |
page | Número de página, empezando en 1 | page=2 |
per_page | Elementos por página, máximo 100 | per_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 anteriorstatus-- el estado actual de la entrada, o"deleted"si se eliminó de forma permanenteupdated_at-- cuándo se produjo el cambiodeleted--truesi la entrada se eliminó,falsesi 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
| Estado | Significado |
|---|---|
| 400 | Parámetros de consulta no válidos |
| 401 | Clave de API ausente o no válida |
| 403 | Se 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 |
| 404 | Entrada no encontrada |
| 429 | Lí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.
Artículos relacionados
¿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