Ferndesk

Artículos

Crear un artículo

Crea un nuevo artículo del centro de ayuda como un borrador abierto. El artículo no estará activo hasta que lo publiques (POST /articles/:id/publish), o a menos que envíes publish: true para publicarlo en una sola llamada (comportamiento heredado).

Proporciona el contenido del cuerpo como content (JSON de Tiptap) o markdown.

Requiere el scope content:write. Límite de solicitudes: 60 solicitudes por hora por clave de API.

Scope requerido: content:write

POST /articles

Crear un artículo

curl --request POST \
  --url 'https://api.ferndesk.com/v1/articles' \
  --header 'Authorization: Bearer YOUR_SECRET_TOKEN' \
  --header 'Content-Type: application/json' \
  --data '{
  "key": "value"
}'
{
  "id": "<string>",
  "title": "<string>",
  "slug": "<string>",
  "contentHtml": "<string>",
  "contentMarkdown": "<string>",
  "contentJson": "<string>",
  "url": "<url>",
  "sectionId": "<string>",
  "collectionId": "<string>",
  "status": "<string>",
  "publishedAt": "<string>",
  "createdAt": "<string>"
}

Artículo creado (borrador o publicado cuando publish=true)

Authorizations

  • Authorization string obligatorio header

    Todas las solicitudes requieren un token Bearer en el encabezado Authorization. Las claves de API tienen el prefijo fdsk_ y deben mantenerse en secreto. Puedes generar y administrar claves desde la página de configuración del desarrollador.

    Las claves pueden restringirse a cualquier subconjunto de estos scopes (cada endpoint indica el scope 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, dejar de publicar, restaurar y enviar contenido a la papelera (hacer que los cambios estén activos)
    • 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 scopes tienen scopes nulos = acceso total (modo heredado).

Request Body

application/json
  • title string obligatorio

    Título del artículo.

  • content any

    Contenido del artículo como documento JSON de Tiptap/ProseMirror. Es mutuamente excluyente con markdown.

  • markdown string

    Contenido del artículo como Markdown. Se convierte a texto enriquecido al escribir. Es mutuamente excluyente con content.

  • publish boolean default

    Cuando es true, el artículo se publica inmediatamente después de su creación (comportamiento heredado de una sola llamada). De forma predeterminada es false: la creación deja un borrador abierto que debes publicar por separado. Default: false.

  • sectionId string obligatorio

    ID de la sección donde debe crearse el artículo.

  • collectionId string | null

    ID opcional de la colección para agrupar este artículo.

  • keywords string

    Palabras clave de SEO.

  • metaDescription string

    Descripción meta de SEO.

  • ogImage string

    URL de la imagen de Open Graph.

  • slug string

    Slug de URL personalizado. Proporcionar un slug nuevo activa automáticamente el modo de slug personalizado.

Response

application/json
  • id string

    ID del 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 renderizado como HTML. Presente cuando format=html (predeterminado).

  • contentMarkdown string

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

  • contentJson any | null

    Documento ProseMirror/Tiptap almacenado sin procesar. Presente cuando format=json. Utiliza el esquema ProseMirror de Ferndesk (nodos personalizados como callout, steps, 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 la colección del artículo.

  • status string | null

    Estado de publicación del artículo.

  • publishedAt string | null

    Marca de tiempo de publicación del artículo.

  • createdAt string

    Marca de tiempo ISO 8601 en UTC.

  • updatedAt string

    Marca de tiempo ISO 8601 en UTC.

  • draft_id string | null

    Borrador abierto creado para este artículo, o null cuando se creó con publish: true.