Menú de la documentación

Desarrolladores

Entregas

Estado de la publicación externa (WordPress o tu API) y de las entregas de webhooks de Blogenia por API, con el permiso account:read.

Ver como Markdown

Dos rutas te dicen si Blogenia ha entregado bien tus artículos: la publicación externa en WordPress o en tu propia API, y los avisos de webhooks.

Publicación externa de un blog

GET/blogs/{blogId}/publications

Estado de cada artículo enviado a WordPress o a tu API.

Parámetros

NombreTipoObligatorioDescripción
blogIdstringSíIdentificador del blog (en la ruta).
estadostringNopending, processing, succeeded, failed o needs_attention.
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[].articleIdstringArtículo enviado.
data[].providerstringwordpress o custom (tu propia API).
data[].statusstringpending (por enviar), processing, succeeded, failed o needs_attention (el resultado es dudoso y requiere que lo revises).
data[].remoteUrlstringURL del artículo en el destino. Solo si se conoce.
data[].lastAttemptAtstringFecha del último intento, ISO 8601 en UTC.
data[].attemptsintegerIntentos realizados.
data[].errorstringTexto del último error. Solo en failed y needs_attention.

Respuestas

CódigoCuándo
200Respuesta devuelta.
400Parámetro no válido (por ejemplo, un estado desconocido) 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/publications?estado=failed" \
  -H "Authorization: Bearer $BLOGENIA_API_KEY"
const res = await fetch('https://api.blogelia.com/v1/blogs/66f1c0a2b3c4d5e6f7a8b9c0/publications?estado=failed', {
  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/publications",
    params={"estado": "failed"},
    headers={"Authorization": "Bearer " + os.environ["BLOGENIA_API_KEY"]},
    timeout=10,
)
res.raise_for_status()
print(res.json())
Respuesta
{
  "data": [
    {
      "articleId": "66f1c0a2b3c4d5e6f7a8b9c1",
      "provider": "custom",
      "status": "failed",
      "lastAttemptAt": "2026-11-03T09:02:10.000Z",
      "attempts": 3,
      "error": "El destino respondió con 502"
    }
  ],
  "page": 1,
  "limit": 20,
  "total": 1
}

Entregas de webhooks

GET/webhooks/deliveries

Entregas de los webhooks de la organización, de la más reciente a la más antigua.

Parámetros de consulta

NombreTipoObligatorioDescripción
estadostringNopending, delivered o failed.
desdestringNoDía YYYY-MM-DD (Europe/Madrid), incluido: solo entregas creadas desde ese día.
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 de la entrega.
data[].webhookIdstringWebhook al que se envió.
data[].eventstringEvento, por ejemplo article.published.
data[].statusstringpending, delivered o failed.
data[].attemptsintegerIntentos realizados.
data[].lastStatusCodeintegerCódigo HTTP de la última respuesta de tu servidor. Solo si hubo respuesta.
data[].createdAtstringFecha de creación, ISO 8601 en UTC.

Respuestas

CódigoCuándo
200Respuesta devuelta.
400Parámetro no válido (estado desconocido, desde que no es una fecha real) o parámetro desconocido.
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/webhooks/deliveries?estado=failed&desde=2026-11-01" \
  -H "Authorization: Bearer $BLOGENIA_API_KEY"
const res = await fetch('https://api.blogelia.com/v1/webhooks/deliveries?estado=failed&desde=2026-11-01', {
  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/webhooks/deliveries",
    params={"estado": "failed", "desde": "2026-11-01"},
    headers={"Authorization": "Bearer " + os.environ["BLOGENIA_API_KEY"]},
    timeout=10,
)
res.raise_for_status()
print(res.json())
Respuesta
{
  "data": [
    {
      "id": "66f1c0a2b3c4d5e6f7a8b9d0",
      "webhookId": "66f1c0a2b3c4d5e6f7a8b9d1",
      "event": "article.published",
      "status": "failed",
      "attempts": 5,
      "lastStatusCode": 500,
      "createdAt": "2026-11-03T09:00:03.120Z"
    }
  ],
  "page": 1,
  "limit": 20,
  "total": 1
}