Skip to Content
ReferenceAPI de entrega headless

API de entrega headless

Esta es una referencia para desarrolladores. Si estás configurando un espacio headless por primera vez, comienza con Crear un espacio headless.

Cada espacio headless sirve sus entradas publicadas desde una API de lectura pública, cacheable en CDN. No requiere autenticación ni clave de API — la API devuelve solo entradas publicadas (los borradores y las entradas programadas nunca aparecen), y un blog es público por definición.

La URL base de tu espacio — incluidos los identificadores de workspace y sitio — se muestra en la página Delivery API del sitio en el portal de cliente, junto con URLs de feed listas para usar por idioma. Todas las rutas que se indican a continuación son relativas a esa base.

Endpoints

RutaDevuelve
GET /postsEntradas publicadas, las más recientes primero (solo campos de resumen)
GET /posts/{slug}Una entrada publicada, contrato completo (ver más abajo)
GET /termsCategorías y etiquetas con recuento de entradas

Parámetros de consulta (/posts)

ParámetroDescripción
languageEntradas en un idioma (p. ej. de). Cada idioma es un blog separado — una campaña por idioma.
categoryFiltrar por slug de categoría. Mutuamente exclusivo con tag.
tagFiltrar por slug de etiqueta. Mutuamente exclusivo con category.
cursorPágina siguiente (más antigua) — pasa el nextCursor de la respuesta anterior.
beforePágina anterior (más reciente) — pasa el prevCursor de la respuesta.
limitElementos por página; valor predeterminado y máximo 50.

language se combina con category o tag: /posts?language=de&category=news es el archivo “News” del blog en alemán. /terms?language=de aplica el mismo ámbito a la taxonomía.

Paginación

Las respuestas de lista son bidireccionales: cada una devuelve nextCursor (hacia entradas más antiguas) y prevCursor (hacia entradas más recientes). Un cursor null significa que no hay más páginas en esa dirección — renderiza cada página únicamente a partir de su token de URL, sin necesidad de mantener un historial de cursores.

Contrato de respuesta de entrada individual

GET /posts/{slug} devuelve { post } con:

  • id, slug, title, excerpt — identidad y texto de resumen.
  • html — el contenido renderizado y saneado. Los enlaces relativos a la raíz se convierten en absolutos tomando como referencia la URL pública de tu sitio. Se puede inyectar tal cual: lista de etiquetas permitidas estricta, sin atributos <script>/<style>/on*.
  • blocks — el array de bloques estructurado, si prefieres renderizar en lugar de inyectar html.
  • metaTitle, metaDescription, keyphrase, categories, tags.
  • featuredImage, bodyImage — { url, width, height, alt?, caption? }.
  • og — { title, description, image }, listo para etiquetas Open Graph.
  • schema — un array de objetos JSON-LD de schema.org (HowTo, FAQPage) cuando la entrada contiene esas secciones; [] en caso contrario. Se entrega fuera de banda porque el saneador del contenido elimina <script> — emite un <script type="application/ld+json"> por entrada en el <head> de tu página para ser elegible para resultados enriquecidos. Las secciones correspondientes del contenido llevan las clases structura-howto / structura-faq para el estilo.
  • publishedAt, updatedAt — ISO 8601. updatedAt es tu señal de revalidación.

La respuesta de lista devuelve solo el subconjunto de resumen — sin html, blocks ni schema.

Consumo desde un framework

Realiza la solicitud en el momento de la compilación o la revalidación y trata la API como tu CMS:

Last updated on