Menú de la documentación

Desarrolladores

Artículos (todos los estados)

Lista y resumen de los artículos de un blog de Blogenia en cualquier estado (borrador, programado, publicado…) con el permiso account:read.

Ver como Markdown

La ruta Artículos solo devuelve lo publicado. Estas dos rutas muestran los artículos de un blog en cualquier estado, sin el contenido.

Listar artículos de cualquier estado

GET/blogs/{blogId}/articles/all

Lista paginada de los artículos de un blog, del más reciente al más antiguo por fecha de creación.

Parámetros

NombreTipoObligatorioDescripción
blogIdstringSíIdentificador del blog (en la ruta).
estadostringNodraft, pending_approval, scheduled, published, unpublished o rejected.
qstringNoTexto contenido en el título (hasta 80 caracteres, sin distinguir mayúsculas).
desdestringNoDía YYYY-MM-DD (Europe/Madrid), incluido: solo elementos creados desde ese día.
hastastringNoDía YYYY-MM-DD (Europe/Madrid), incluido: solo elementos creados hasta ese día. No puede ser anterior a desde.
pageintegerNoPágina, desde 1 (por defecto 1, máximo 10000).
limitintegerNoElementos por página, de 1 a 50 (por defecto 20).

Campos de la respuesta

CampoTipoDescripción
dataarrayElementos de la página.
pageintegerPágina devuelta.
limitintegerTamaño de página aplicado.
totalintegerTotal de elementos que cumplen el filtro, en todas las páginas.
data[].idstringIdentificador del artículo.
data[].titlestringTítulo.
data[].slugstringÚltimo segmento de la URL pública.
data[].statusstringEstado, uno de los valores de estado.
data[].sourcestringmanual, generated (generado a petición) o autopilot.
data[].createdAtstringFecha de creación, ISO 8601 en UTC.
data[].scheduledAtstringFecha programada. Solo si la tiene.
data[].publishedAtstringFecha de publicación. Solo si la tiene.
data[].wordCountintegerNúmero de palabras.
data[].requiresHumanReviewbooleantrue si el artículo necesita revisión humana antes de publicarse.
data[].urlstringURL pública. Solo en artículos publicados.

Respuestas

CódigoCuándo
200Respuesta devuelta.
400Parámetro no válido (estado desconocido, fechas con code invalid_date o invalid_range, q demasiado largo) o parámetro desconocido.
404El blog no existe o es de otra organización.
401Clave ausente, no válida o revocada.
403La clave no tiene el permiso account:read (code: "insufficient_scope"), tu plan es Free (plan_required) o la organización está suspendida (ORGANIZATION_SUSPENDED).
429Límite del plan superado. Ver Límites de uso.
Petición
curl "https://api.blogelia.com/v1/blogs/66f1c0a2b3c4d5e6f7a8b9c0/articles/all?estado=scheduled&limit=10" \
  -H "Authorization: Bearer $BLOGENIA_API_KEY"
const res = await fetch('https://api.blogelia.com/v1/blogs/66f1c0a2b3c4d5e6f7a8b9c0/articles/all?estado=scheduled&limit=10', {
  headers: { Authorization: 'Bearer ' + process.env.BLOGENIA_API_KEY },
});
if (!res.ok) throw new Error('HTTP ' + res.status);
const body = await res.json();
console.log(body);
import os
import requests

res = requests.get(
    "https://api.blogelia.com/v1/blogs/66f1c0a2b3c4d5e6f7a8b9c0/articles/all",
    params={"estado": "scheduled", "limit": 10},
    headers={"Authorization": "Bearer " + os.environ["BLOGENIA_API_KEY"]},
    timeout=10,
)
res.raise_for_status()
print(res.json())
Respuesta
{
  "data": [
    {
      "id": "66f1c0a2b3c4d5e6f7a8b9c1",
      "title": "Cinco errores al reformar un baño",
      "slug": "cinco-errores-al-reformar-un-bano",
      "status": "scheduled",
      "source": "autopilot",
      "createdAt": "2026-11-02T09:00:12.000Z",
      "scheduledAt": "2026-11-05T08:00:00.000Z",
      "wordCount": 1280,
      "requiresHumanReview": false
    }
  ],
  "page": 1,
  "limit": 10,
  "total": 1
}

Resumen de artículos

GET/blogs/{blogId}/articles/summary

Recuento por estado y listas de lo que viene.

Permiso necesario: account:read. Solo lleva el parámetro de ruta blogId.

Campos de la respuesta

CampoTipoDescripción
countsobjectNúmero de artículos por estado. Siempre trae los seis estados, con 0 si no hay ninguno.
periodstringMes natural en curso (YYYY-MM, Europe/Madrid).
publishedThisMonthintegerArtículos publicados en period.
publishedPreviousMonthintegerArtículos publicados el mes anterior.
upcomingScheduledarrayHasta 10 artículos programados, el más próximo primero: [{ id, title, scheduledAt }].
pendingApprovalarrayHasta 10 artículos pendientes de aprobar: [{ id, title, scheduledAt? }].

Respuestas

CódigoCuándo
200Respuesta devuelta.
404El blog no existe o es de otra organización.
401Clave ausente, no válida o revocada.
403La clave no tiene el permiso account:read (code: "insufficient_scope"), tu plan es Free (plan_required) o la organización está suspendida (ORGANIZATION_SUSPENDED).
429Límite del plan superado. Ver Límites de uso.
Petición
curl "https://api.blogelia.com/v1/blogs/66f1c0a2b3c4d5e6f7a8b9c0/articles/summary" \
  -H "Authorization: Bearer $BLOGENIA_API_KEY"
const res = await fetch('https://api.blogelia.com/v1/blogs/66f1c0a2b3c4d5e6f7a8b9c0/articles/summary', {
  headers: { Authorization: 'Bearer ' + process.env.BLOGENIA_API_KEY },
});
if (!res.ok) throw new Error('HTTP ' + res.status);
const body = await res.json();
console.log(body);
import os
import requests

res = requests.get(
    "https://api.blogelia.com/v1/blogs/66f1c0a2b3c4d5e6f7a8b9c0/articles/summary",
    headers={"Authorization": "Bearer " + os.environ["BLOGENIA_API_KEY"]},
    timeout=10,
)
res.raise_for_status()
print(res.json())
Respuesta
{
  "counts": {
    "draft": 2,
    "pending_approval": 1,
    "scheduled": 3,
    "published": 20,
    "unpublished": 0,
    "rejected": 1
  },
  "period": "2026-11",
  "publishedThisMonth": 4,
  "publishedPreviousMonth": 8,
  "upcomingScheduled": [
    { "id": "66f1c0a2b3c4d5e6f7a8b9c1", "title": "Cinco errores al reformar un baño", "scheduledAt": "2026-11-05T08:00:00.000Z" }
  ],
  "pendingApproval": [
    { "id": "66f1c0a2b3c4d5e6f7a8b9c2", "title": "Cuándo conviene cambiar las ventanas" }
  ]
}