Ferndesk

Artículos

Exportar artículos incrementalmente

Un feed de sincronización de todos los artículos de tu centro de ayuda, ordenados primero por los más antiguos según updated_at, con paginación mediante cursor.

A diferencia de GET /articles, este feed es el contrato de réplica completa:

  • Incluye todos los estados: los artículos en borrador, publicados, no publicados Y enviados a la papelera aparecen, cada uno con su status actual. Un artículo enviado a la papelera aparece aquí con status: "trashed" para que una réplica posterior pueda eliminarlo. Esto es intencional: los consumidores ven las eliminaciones y los cambios a no publicado como transiciones de estado, en lugar de que las filas desaparezcan silenciosamente.
  • since (ISO 8601) es obligatorio en la primera solicitud y limita el feed a los artículos actualizados en ese momento o después.
  • En las páginas posteriores, omite since y pasa el next_cursor de la respuesta anterior como start_cursor; el cursor contiene la posición exacta (updated_at, id).
  • format=markdown devuelve contentMarkdown en lugar de contentHtml.

Requiere el ámbito content:write (el feed incluye estados no publicados).

Ámbito obligatorio: content:write

GET /articles/incremental

Exportar artículos incrementalmente

curl --request GET \
  --url 'https://api.ferndesk.com/v1/articles/incremental' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN'
{
  "results": [
    {
      "id": "<string>",
      "title": "<string>",
      "slug": "<string>",
      "contentHtml": "<string>",
      "contentMarkdown": "<string>",
      "contentJson": "<string>",
      "url": "<url>",
      "sectionId": "<string>",
      "collectionId": "<string>",
      "status": "<string>",
      "publishedAt": "<string>",
      "createdAt": "<string>"
    }
  ],
  "has_more": true,
  "next_cursor": "<string>"
}

Página incremental de artículos paginada mediante cursor

Authorizations

  • Authorization string obligatorio header

    Todas las solicitudes requieren un token Bearer en el encabezado Authorization. Las claves de API llevan el prefijo fdsk_ y deben mantenerse secretas. Puedes generar y administrar claves desde la página Developer settings.

    Las claves pueden restringirse a cualquier subconjunto de estos ámbitos (cada endpoint indica el ámbito que requiere mediante x-required-scopes):

    • content:read: Leer y buscar artículos, colecciones, secciones y traducciones del centro de ayuda
    • content:write: Crear y editar borradores de artículos, usuarios y tareas; mover artículos y colecciones
    • content:publish: Publicar, retirar la publicación, restaurar y enviar contenido a la papelera (hacer efectivos los cambios)
    • analytics:read: Leer informes, análisis y comentarios sobre artículos del centro de ayuda
    • conversations:read: Leer conversaciones y transcripciones del asistente de IA
    • webhooks:manage: Crear y administrar suscripciones a webhooks salientes

    Conceder content:write o content:publish implica content:read. Las claves creadas antes de la definición de ámbitos tienen ámbitos nulos = acceso total (modo heredado).

Query Parameters

  • format string enum

    Formato de representación del contenido. html (predeterminado) devuelve contentHtml; markdown devuelve contentMarkdown; json devuelve contentJson, el documento ProseMirror/Tiptap sin procesar almacenado. El JSON utiliza el esquema ProseMirror de Ferndesk (nodos personalizados como callout, steps y cards) y es la representación sin pérdida del cuerpo del artículo. Ejemplo: markdown

  • page_size integer

    Número de elementos que se devolverán por página (1-100). Ejemplo: 20

  • since string (date-time)

    Límite inferior de la marca de tiempo ISO 8601 (inclusive) en updated_at. Obligatorio en la primera solicitud; omítelo y pasa start_cursor en las páginas posteriores. Ejemplo: 2026-01-15T18:25:43.511Z

  • start_cursor string

    Cursor de paginación opaco. Pasa el next_cursor de una respuesta anterior para obtener la página siguiente. Ejemplo: eyJ2IjoxLCJrIjpbIjIwMjYtMDEtMDEiLCJhcnRfMSJdfQ

Response

application/json
  • results[] object array

    Elementos de esta página. Carga útil del artículo devuelta por los endpoints de artículos.

    + Show Child Attributes
    • id string

      ID de artículo de Ferndesk (art_...).

    • title string

      Título principal del artículo.

    • slug string | null

      Slug de URL del artículo.

    • contentHtml string

      Contenido del artículo representado como HTML. Presente cuando format=html (predeterminado).

    • contentMarkdown string

      Contenido del artículo representado como Markdown. Presente cuando format=markdown.

    • contentJson any | null

      Documento ProseMirror/Tiptap sin procesar almacenado. Presente cuando format=json. Utiliza el esquema ProseMirror de Ferndesk (nodos personalizados como callout, steps y cards) y es la representación sin pérdida.

    • url string (uri) | null

      URL pública canónica de este artículo.

    • sectionId string | null

      ID de la sección que contiene el artículo.

    • collectionId string | null

      ID opcional de agrupación de colecciones para el artículo.

    • status string | null

      Estado de publicación del artículo.

    • publishedAt string | null

      Marca de tiempo en la que se publicó el artículo.

    • createdAt string

      Marca de tiempo ISO 8601 en UTC.

    • updatedAt string

      Marca de tiempo ISO 8601 en UTC.

  • has_more boolean

    Indica si hay más elementos disponibles después de esta página.

  • next_cursor string | null

    Cursor que se debe pasar como start_cursor para la página siguiente, o null en la última página.